安卓君通过Android Studio 将一次性的属性放入xml中可以实现代码的UI呈现实时预览参考安卓实时预览,实现UI方面的快速开发,而ios在开发调试UI界面的时候必须通过漫长的过程(编译->运行->安装->显示->点击跳转到目标界面)才能被我们看到,在追求极致的UI快速开发中这无疑是令人尴尬的,毕竟两者耗时不在一个维度上面。下面介绍一个插件工具injectionforxcode,github地址:该插件github地址。
安装:xcode8禁止了插件的安装后面众人想出了重新签名xcode来破解 然后在上架的时候恢复签名,或者干脆使用两个xcode一个用来平时开发一个用来打包。这个可以自行谷歌。在下使用了重新签名xcode方法,简单介绍哈:
$:update_xcode_plugins --unsign // 解除签名
$:update_xcode_plugins --restore // 重新签名
以上的终端操作不需要cd到具体的目录直接在当前用户名下即可;
搜索安装injectionforxcode
然后进入文件夹
$:~/Library/Application Support/Developer/Shared/Xcode/Plug-ins
打开插件
找到UUIDS
添加自己的UUIDs进去,找到自己的见下面:
找到自己的
$:defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID
然后重启xcode ->load bundle
选择target
选择箭头操作
然后会在main.m写入
在需要调试的界面写入
以上就是整个过程了,写的非常的详细也不装逼,希望大家都能看懂
项目一定要在debug模式下进行
每次修改约束或者颜色字体等直接contol+shift+=就可以了。会省去重新编译以及打开app的步骤,整个插件的原理:
它通过解析应用的build日志来判断源代码文件上次是怎么被编译的。然后会把这些重新编译一遍包在一个已经通过动态加载器(dynamic loader)注入到应用的bundle里。这个时候其实有两个版本的类在app里,一个原始的和一个修改过的版本。修改过的版本通过和原始类"swizzled"来产生效果。
swizzling利用了OC的runtime。这个也可以在Swift中没有标记为final或者private的方法(可以被override的方法)。对结构体无效












网友评论