Xcode UI界面调试神器 injectionIII

Posted 张三的程序生活

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode UI界面调试神器 injectionIII相关的知识,希望对你有一定的参考价值。

injectionIII简介

        injectionIII 是一个运行的macOS上的Xcode插件,可以让ios开发者能够在通过commad+S操作就可以直接看到UI改变后的效果,对于UI开发阶段以及UI调试非常的有帮助。injectionIII仅仅能够在模拟器上使用,真机无法使用

injectionIII 下载途径

         可以通过mac 的AppStore 搜索 injectionIII 进行下载,也可以通过github:https://github.com/johnno1962/injectionforxcode 进行下载安装,不建议使用其他非正规渠道的安装包,注:小心病毒

部署步骤

1,appDelegate.m文件中进行部署

OC项目:

```

#if DEBUG


    // iOS

    [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load];

    // tvOS

    //[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle"] load];

    // macOS

    //[[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle"] load];


#endif


```

swfit项目:

```

#if DEBUG


        Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle")?.load()

        //for tvOS:*

        Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/tvOSInjection.bundle")?.load()

        //Or for macOS:*

        Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()


 #endif


```

2,在ViewController.m中部署

OC项目:

```

- (void)injected

{    

  //自定义修改...

  //重新加载view    

  [self loadView];

  [self viewDidLoad];

  [self viewWillLayoutSubviews];

  [self viewWillAppear:NO];

}

```

swift项目:

```

 @objc func injected(){

        self.loadView()

        self.viewDidLoad()

        self.viewDidLayoutSubviews()

        self.viewWillAppear(false)

    }

```

3,运行injectIII 配置项目路径

  打开InjectionIII工具,选择Open Project,选择你的代码所在的路径,然后点击Select Project Directory保存。


注意:InjectionIII 的File Watcher选项要保持选中状态。

4,运行项目
        按照第3步选择完项目路径后,先在Xcode Command+R运行一下你的项目,控制台提示如下信息,即表示InjectionIII连接成功,连接成功的话InjectionIII标志会由蓝变橙(可能不同InjectionIII版本颜色不太一样)。


控制台提示信息

连接成功后,就可以在第2步添加的injected方法里面修改控件、添加控件了,修改完毕Command+S保存一下代码,立刻就在模拟器上显示修改的信息了。


需要注意的两点:

  1. InjectionIII工具只对模拟器有效,真机无效。
  2.在injected方法里面修改的代码,再次Command+R运行时不会起作用。因为代码里面只声明了injected方法,并没有去调用,所以不会生效;我们Command+S保存代码后生效,是因为在保存后通过InjectionIII工具读取injected方法里面修改的代码,“告诉”模拟器哪儿修改了,是InjectionIII起的作用。因此我们需要把修改的代码放到合适的位置,让程序一运行就会执行。


期待苹果公司能够把这些功能直接集成到Xcode里面,而且真机也能够支持,这样的话调试测试的时间会减少很多。


更多优质文章,可以微信扫码关注:




以上是关于Xcode UI界面调试神器 injectionIII的主要内容,如果未能解决你的问题,请参考以下文章

想要在 Xcode 中的 UI 测试期间在测试运行后停止调试控制台清除

Xcode使用介绍之二:创建UI界面+连线

Xcode 10.2.1 界面构建器 - 无法在视图控制器(或文档大纲)上移动(拖动)UI 元素

21 | 移动测试神器:带你玩转Appium

取代 Postman + Swagger!这款神器功能更强大,界面更炫酷!

取代 Postman + Swagger 这款神器功能更强大,界面更炫酷