写布局规则写到吐了,但是对 Storyboard 来设置约束总感觉没安全感,而且很多约束不知道该怎么在界面上描述
你现在项目中是使用 Storyboard 来设置约束的还是代码?有没有好的 Storyboard 来设置约束的教程推荐?
写布局规则写到吐了,但是对 Storyboard 来设置约束总感觉没安全感,而且很多约束不知道该怎么在界面上描述
你现在项目中是使用 Storyboard 来设置约束的还是代码?有没有好的 Storyboard 来设置约束的教程推荐?
用代码写会疯掉的,用storyboard代码能实现的它都能实现。
这里有几个地址你可以参考一下
纯代码,用masonry,很快,极快,让我直接扔掉了自己封装的一套垃圾。
Storyboard和Xib用了一段时间,产生了很多困惑和问题,最终在公司现在的项目上放弃了。这里列举3个,希望IB达人指正。
以上。
补充一下,刚好在大屏iPhone出来的时候加入了现在的公司,从头拉起一个项目,直接用iOS8.1的SDK,在autolayout上真是吃了不少苦头。我觉得不论用IB还是用代码,autolayout本身的使用最终都不会有多大问题,真正的坑其实是autolayout的兼容性问题。我遇到了不少在iOS8下正常工作,但在iOS7下crash或卡viewDidLayoutSubviews无限循环的bug,绕过去花了大量时间。相比同时间android组的开发速度。。。。。有时候是会有点转行的冲动的。。
再补充一下,autolayout的debug在刚开始的时候是非常痛苦的,基本只能根据console里的一大排错误信息慢慢做排除法。用纯代码写约束的一个巨大好处是,暂时地移除部分约束(注释即可),或添加测试约束(用Debug_constraint_only之类的宏控制即可)非常容易,而在IB里做则非常痛苦。一是要反复地进出各个view层级来install/uninstall,二是面对复杂的UI,很容易就恍惚了刚刚改了什么(也可能是我脑残片忘了吃了)。
现在3.5寸,4寸,4.7寸,5.5寸以及iPad、Apple Watch这么多尺寸的屏幕共存,使用代码布局就显的捉襟见肘了,且不说效率,容错率就很低。而且WatchKit压根不允许你使用代码布局,说明Apple逐渐有规避代码布局的趋势。建议还是系统的学习Storboard、AutoLayout、Size Classes三大利器。
这里介绍两篇外国的译文,可以参考一下:
Swift自适应布局(Adaptive Layout)教程
2 回答1.1k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
1 回答1.5k 阅读
1 回答1.4k 阅读
1.7k 阅读
1 回答1.1k 阅读
先说个人看法:具体情况具体分析,该用什么用什么。脱离具体使用场景的讨论都是耍流氓。
AutoLayout可以解决你很多约束需求,你有什么需求是AutoLayout实现不了的可以通过代码调整,不过情况很少的。。。举个例子看看?
12-05 更新
回应一下 @NSFish 的回答。
这种统一控件不应该用基类来做吗?比如整个应用所有按钮字体都是14号字,如果有1000个按钮你就多了1000行设置格式的代码?这种无意义代码不应该尽量减少吗?如果我又要加上背景颜色,那你岂不是要找到这1000个按钮然后挨个加上背景颜色?累不累。。。
XIB 是可以设置基类的 (custum class),而且利用 run time attr 标签可以设置一些运行时属性,比如圆角,投影之类。我觉得这种代码属于 无意义重复代码 ,如果能减少是最好的。
storyboard 是故事版,你见过在链表里面插入一个字符串的吗,显然应该加个节点啊。。。
这种情况如果想用 xib 可以新建 xib 文件并建立关联即可。至于你说的初始化的问题,没看懂你想说什么,建议先了解一下 view 的生命周期和 xib 的加载流程。
后面的我不想说太多了,时间有限,如果有了问题建议先google一下,比如:
Using xib object inside another xib
我觉得能解决你的很多困惑。
还是那句话,具体问题具体分析。很多场景确实不适合使用 Storyboard (比如我要写个基类继承 UIButton 然后有一些自己的默认属性比如字体颜色什么的),但是绝大部分场景是推荐使用 XIB 的。看你怎么用了。
当然 Masonry 也是个不错的选择。