最近在优化项目,项目中一些storyboard中写的界面,报了一些约束错误,还有的storyboard中场景有10多个,打开起来非常慢。修复问题的同时总结一下思考。
一、关于storyboard/xib还是代码
以前自己采用的是xib来写控件,vc界面采用代码来写。
- 优点:这样的好处是不用再因为sb中需要修改导致冲突,并且在一个sb中,场景很多的情况下,打开速度慢的情况。控件用xib来写提高了效率。
- 缺点:无法直观看到页面与页面直接跳转,界面展示。
采用sb+xib方式:
- 优点:vc中省去了许多界面初始化代码,直观看到页面与页面跳转到哪个页面,写界面速度快很多,不再是重复写一些初始化代码。
- 缺点:多人维护sb时,修改sb容易产生冲突。sb页面比较多时,开打速度慢。
总结:不管使用纯代码、sb/xib与代码配合还是纯sb+xib,出发点都是要提高效率,便于维护。使用sb时,一个sb尽可能维持在5个vc左右,减少后期维护产生冲突的几率,也提高打开sb的速度。复杂动态的布局方式建议使用代码的方式,避免因为动态约束产生冲突。代码的方式,尽可能将控件分离到单独一个view文件中。如果只是一个简单的button在vc上,相关初始化代码可以在集中写在getter上。
二、调试界面Tips
在修改调试界面时,有时经常找不到界面在哪个文件。或者说想定位一个按钮在哪里文件代码里。
- 如果是界面中有自定义控件,通过视图层级可以看出类名。
- 如果界面只是简单只用UIButton,而想修改这个button实例,通过viewcontroller层级先定位到vc。可以使用lldb打印出当前控制viewcontroller层级,当定位到vc时,再去寻找相关代码就比较容易了。可以使用chisel插件,这样lldb中pvc命令就可以打印出。chisel还有其他简化命令,提高工作效率。
三、参考文章:
https://onevcat.com/2013/12/code-vs-xib-vs-storyboard/
http://www.cocoachina.com/ios/20160714/17035.html