不用重新跑就可以更改界面元素属性的神器
前提
- Xcode10以上
- 只能在模拟器上使用,因为这是在App Store下载的App,要加载bundle包。如果在真机上使用的话,是找不到bundle包的
步骤
- 在Mac App Store下载InjectionX下载链接,打开。
- 第二步:打开Xcode项目,选择项目根目录(就是有.xcodeproj和xcworkspace的文件夹)
- 在项目的AppDelegate加入代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#if DEBUG
//OC
[[NSBundle bundleWithPath:@"/Applications/InjectionX.app/Contents/Resources/iOSInjection.bundle"] load];
//Swift
Bundle(path: "/Applications/InjectionX.app/Contents/Resources/iOSInjection.bundle")?.load()
#endif
}
- command + R 运行项目,注意看 Xcode 控制台的 log日志
Injection connected, watching /Users/xuyang/Desktop/TestInject/**
看到这句话的时候说明已经OK了
- 在要修改的界面添加下面代码,修改完成之后command + S 保存一下就能看到效果了
//OC
- (void)injected{
NSLog(@"injected--%@",self);
self.view.backgroundColor = [UIColor greenColor];
}
//Swift
@objc func injected(){
print("injected--\(self)")
self.view.backgroundColor = UIColor.red;
}
//控制台打印:
*** Compiling /Users/xuyang/Desktop/TestInject/TestInject/ViewController.m ***
Loading .dylib - Ignore any duplicate class warning...
objc[33904]: Class ViewController is implemented in both /Users/xuyang/Library/Developer/CoreSimulator/Devices/6BE3C6BE-39D1-48D1-9A07-F3093399A7E9/data/Containers/Bundle/Application/3C0228A2-9487-45FB-91BA-48A39ADC9B6C/TestInject.app/TestInject (0x1079e3d28) and /Users/xuyang/Library/Containers/com.johnholdsworth.InjectionX/Data/eval101.dylib (0x1258e0160). One of the two will be used. Which one is undefined.
2019-03-26 21:51:20.411 TestInject[33904:14812543] injected--<ViewController: 0x7fa9b4d042b0>
问题
没有看到效果的问题的总结:
1.确认Xcode的版本10.0及以上
2.确认 Open Project 的地址是正确的
3.command + R确认有连接上
4.确认已经把注入的代码写粘贴复制在真实需要改变的地方
5.看下有没有保存成功,也就是针筒的颜色从绿色变成红色,控制台有没有打印
6.如果修改的是cell/item上面的内容,需要上下滚动才能看到效果, 如果修改的是一个普通页面的内容,最好是退出这个页面,再进入这个页面
备注
本地新建个私有 pod,可以连接上,在私有pod 的 demo里面是可以的,但是在 development Pods 里面添加-(void)injected方法command+s控制台打印
*** Could not locate containing project or it's logs.
Have you customised the DerivedData path? ***
没有达到预期效果,如果你知道答案,欢迎在👇留言
网友评论