ViewChaos:iOS UI 调试黑科技
UI调试是每一个APP开发者或者前端开发者必备的技术。相对来说,iOS开发者调试UI是最苦逼的。无论是用
Storyboard&XIB
或者是纯手写代码实现UI,都要经过修改代码->编译生成->启动APP,进入指定页面后才能看到效果(android studio 和闪电功能和webpack的及时刷新功能真是好啊)。整个过程需要等待一定的时间。而且反复修改编译后才能达到自己想要的效果,浪费时间。同时如果你是用代码生成UI的话,想要在复杂的页面里找到每个视图控件对应的代码也比较麻烦(目前我的所有项目都是用纯代码写的)。有一天无意中发现了一个叫RunTrace
的开源项目RunTrace,它是一个IOS动态调试UI的开源项目,做得非常的有新意。并且也能够解决一些用纯代码写UI的疼点。我对这个项目非常有兴趣,我就用Swift重写一次,并且加入了自己的一些功能,使用iOS的UI调试更加方便了。正如标题,它叫ViewChaos,下面给大家介绍这个项目是怎么使用的
iOS UI开发现状
目前iOS和UI开发最主流的开发方式有两种,一是使用Stroyboard&XIB
,二是用纯代码手写UI,当然一个项目也很有可能是使用两种技术都用上了。
可以对目前最主流的APP包进行分析,参考xib 使用调研情况,可见目前这两种开发方式都很主流。总的来说,两者有如下优劣势。
StoryBoard优势
+ 开发界面所见即所得,可以快速通过拖拽构造界面。也可以明确地知道各个ViewController
之间的转换关系
+ 代码量少,开发周期短
+ 关键是已经成为新建项目时候的默认配置,代表着苹果以后的方向和重心
遗憾
+ 很难多人协作
+ ViewController
的重用和自定义的View
的处理
+ 需要很大的显示器
手写代码UI优势
+ 适合大型项目大规模使用,利于版本管理、追踪改动以及代码合并
+ 最好的代码重用性
遗憾
+ 慢,开发周期长,维护代码复杂
+ 不能实时看到效果,只能一次次修改代码偿试
+ 自动布局AutoLayout
困难
手写代码和Stortboard选择建议
实际开发过程中,完全不需要全程使用一种开发方式,可以具体情况来选择性的使用 Storyboard
或者手写代码,下面是建议:
- 对于复杂的、动态生成的界面,建议使用手工编写界面。
- 对于需要统一风格的按钮或UI控件,建议使用手工用代码来构造。方便之后的修改和复用。
- 对于需要有继承或组合关系的
UIView
类或UIViewController
类,建议用代码手工编写界面。 - 对于那些简单的、静态的、非核心功能界面,可以考虑使用
xib
或Storyboard
来完成。
iOS UI调试的不爽的地方
相对其他两家(Windows App 和 Android)
和Web开发,调试iOS UI要蛋疼得很多。首先如果你是使用Storyboard
或者xib
的话,有很多控件的属性是不能直接在里面修改的。比如边框属性和自定义View的一些属性(其实也是可以通过一些手段让Xcode直接支持的),而且也绘图的效果也不能直接看到,如果一个Storyboard
里面的ViewController
用多了,没有个大的显示器根本无法Hold住。如果你在里面使用跳转线,那关系就更复杂了。不过目前情况已经有所改观,你可以直接跳到其他的Storyboard
,也可以使用代码来控制跳转导航。下图就是知名开源APP Yep项目内的Storyboard
:
如果你是用代码写UI的话,那就是另一个极端了。你只能大概想象出自己写出来的UI是怎么样的,只有反复的调试才能达到自己满意的效果。而且把大部分的UI代码都放在
ViewController
里,也会让ViewController
臃肿不堪。
所以对我来说(纯代码写UI),UI调试就是反复的修改代码,一次又一次地调整它的各种属性,以达到美工的需求。如果能够直接在APP里面动态地调试UI,获取View
的各种属性,显示它的边框,位置,大小,字体和颜色,同时还可以直接修改这些属性,让其能够达到美工的需要,我们便可以根据已经调整过的UI直接获取它的属性,再在代码里面修改一步到位,那样就可以节省很多的反复调试时间。大大提升了iOS调试效率。
ViewChaos 的特性
- 集成方便,不用写一行代码,把文件拖进你的项目就行了,而且只有在
Debug
模式有效,Release
模式将自动禁用。 - 给
View
添加了Name
属性,这样就能知道哪个View
是由哪些代码生成的,可以更好地定位到代码。 - 添加了摇一摇功能,里面集成了放大镜,UI边框显示,UI透明度和标记界面模式,可以查看整个界面布局的一些基本信息。
- 可以获取
View
的基本信息,以及它的所有的父View
和子View
的基本信息,同时还可以标记该View
的坐标位置信息。 - 可视化显示
Autolayout
。 - 可以实时追踪
View
的状态。 - 监测内存泄露。
- 可以实时修改
View
的Frame, Font,border,tintColor,background
,等属性,这样就不用一次又一次地调试代码后编译启动APP查看,可 以一次性设置后再在代码里修改。 - 可以生成代码,这个用处不大,但是也是可以参考的。
ViewChaos的安装和使用
ViewChaos
的安装极为方便,有两种安装方式,如果你不想用Cocoapods
,只想拖文件,按照以下步骤就行:
- 第一步:将这七个文件
(ViewChaos.swift,ViewChaosInfo.swift,ViewNeat.swift,ZoomView.swift,DrawView.swift,MarkInfo.swift,MarkView.swift)
�复制到你的项目里,或者直接复制ViewChaos
这个文件夹到你的项目。 - 第二步:选择
target-> 你的项目 -> Build Setting-> 搜索 'swift compile'-> 选择 'Other Swift Flags' -> 选择 DeBug option -> 添加 -DDEBUG command (这个能让此工具仅工Debug模式有效)
- 第三步:如果你找不到
Other Swift Flags
选项,说明你的项目是纯Objective-c
,那么你需要手动添加一个swift
文件到你的项目,这时XCode
会让你添加一个header bridge
文件,这时侯选择是,再做第二步操作.】 - 第四步:开始使用。
如果你想用Cocoapods
,就更简单了:
- 第一步:
pod 'ViewChaos'
,再安装就行。 - 第二步:
选择Pods项目->选择 target-> ViewChaos -> Build Setting-> 搜索 'swift compile'-> 选择 'Other Swift Flags' -> 选择 DeBug option -> 添加 -DDEBUG command (这个能让此工具仅工Debug模式有效).
- 第三步:开始使用。
注意一定要添加-DDEBUG
,加上这个功能是为了让ViewChaos
可以在Debug
模式下启动,而Release
模式会不会启动。然后启动你的项目,你就可以看到你的APP里面多了一个V的绿色小圆,同时你的APP也有了摇一摇功能。下面我用图片和文字来给读者展示ViewChaos
的各种功能,建议读者下载Demo
用真机或者模拟器亲自试试,下面的详细讲解这些功能。
摇一摇功能
摇一摇呼唤出菜单如果ViewChaos
正确地集成到了你的APP里,那么就可以使用摇一摇调试功能。摇一摇功能里面一共有四个小功能,分别是放大镜,显示边框,显示透明度和标记界面。下面一个一个讲解
放大镜模式比较简单,当启用后,用手指触摸屏幕,它会将你手指下的点放大显示(只支持单点),上面绿色区域可以显示该点的坐标和颜色值。
这样也行???在这里其实针对单个View
,我也做了标记功能(上面的动图都比较老,没有显示标记功能) ,只要在这个表里就可以启动这个功能
View位置
第一个功能就是改变View
的位置,比较简单
第二功能就是改变View
的大小,上面有两个按钮,一个是控制左上边的大小,一个是控制右下边的大小。
第四个功能就是改变View
的边框,摇杆上面有三个子菜单,分别是颜色,边框和弧度,选择哪种就能控制哪种。
最后一个功能就是生成代码啦,将所有的属性调整好之后,点一下code就能生成下面的代码。你可以从里面选择出有用的部分。
- 里面部分功能说明,在调整
VIew
位置和大小时,如果想让View的变化更慢一些,那么可以修改scale
的值,5是最快的,1是最慢的。 - 如果你想做特别微小的调整,那么可以点Precise按钮启动精确模式,想退出再点一下就行.
-
Reset(重设)
按钮会将View回复成原来的状态. -
Close(关闭)
按钮会关闭控制面板.
以上差不多就是VIewChaos的
全部功能,要这里还是建议读者亲自去下载Demo
试用一下。ViewChaos
基本上能够满足大部分UI的调试,但是也有的属性还不能看到和修改,另外还希望读者给出建议,这些都是以后的改进方向。