关于AutoLayout的介绍可参考:
使用解读:
http://www.javashuo.com/article/p-vmnksbpj-hk.htmlhtml
iOS 屏幕适配,autoResizing autoLayout和sizeClass图文详解
http://www.cnblogs.com/cxbblog/p/4166876.htmlios
AutoLayout使用注意点参考:
https://github.com/smileyborg/UIView-AutoLayout/wiki/Tips-and-Tricksgit
AutoLayout实现UITableView的Cell动态布局及动态行高必看手册
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
http://stackoverflow.com/questions/18746929/using-auto-layout-in-uitableview-for-dynamic-cell-layouts-variable-row-heights
http://codingobjc.com/blog/2014/10/15/shi-yong-autolayoutshi-xian-uitableviewde-celldong-tai-bu-ju-he-ke-bian-xing-gao/index.html (中文翻译)github
AutoLayout启用时,约束与手动设置frame方式冲突,不能混合使用,须要更改布局时应该考虑动态修改约束变量,而后触发强制刷新layout
经过约束条件,AutoLayout使用自动布局引擎Cassowary动态计算、维护各个view所需的frame
但bounds属性依然能够手动更改操做
frame表示view自己相对父容器的位置、大小信息
bounds表示view的内容相对view的实际绘制坐标位置,通常为(0, 0)
bounds的尺寸与frame尺寸不必定相等(内容与view尺寸不必定相等)segmentfault
关于bounds的解释与使用可参考:
如何对使用了autolayout的UIView添加动画
http://www.cocoachina.com/ios/20141010/9869.html数组
频繁的删除、添加约束会致使严重的性能问题
相对于删除再添加新约束,苹果推荐经过修改已有约束的方式实现更新
拥有最高优先级(1000-required)的约束不容许发生冲突,此外的约束不强制必须知足,所以可存在竞争性冲突设置wordpress
view.constraints数组包含layout子view所需的全部约束
可经过constraint的firstItem、firstAttribute、secondItem、secondAttribute、constant等属性筛选出须要修改的约束
也可将约束绑定到outlet对象进行修改
约束中只有constant属性容许实时修改布局
约束修改完毕后,可调用重layout等方式刷新界面布局性能
操做方法可参考:
Auto growing UITextView Using Auto Layout
https://corecocoa.wordpress.com/2013/11/09/auto-growing-uitextview-using-auto-layout/动画
具有内容动态高度的组件可不设置高度约束(运行时会被隐式指定并实时更改)
当XIB的组件缺乏最低必要约束条件时(例如View高度),编译时IB系统会自动生成插入一个默认的约束条件用以补全全部约束,每一个界面最终必须使用静态绝对布局来定位,部分尺寸可变组件须要动态相对布局时,在运行时经过组件内部代码或手工代码进行约束值的动态更改、从新layout。
当不但愿系统自动追加约束条件时,可在XIB中设定一个临时约束,指定Remove at build time,则在编译期间对该约束进行忽略,并再也不追加缺乏的约束,此时须要在代码中手动添加所缺的约束条件。
同一组件中存在重复类型(而且优先级相同??)的约束时将抛出异常(除非标记为deactivate)。
关于Remove at build time以及Uninstalled constraint与Placeholder constraint的区别,可参考:
http://stackoverflow.com/questions/19015215/trouble-with-autolayout-on-uitableviewcell