iOS开发iOS学习笔记程序员

约束布局之旅—1

2017-05-29  本文已影响48人  osbornZ

约束方式

只有iPhone4的时候,我们可以在代码里将没一个可视单元的位置写死,这样是没问题的,但随着iPhone5、6的发布;布局情况就越来越微妙,苹果也是持续在优化整合更新约束布局方式。

UIView (UIConstraintBasedCompatibility)   
@property(nonatomic) BOOL translatesAutoresizingMaskIntoConstraints

When you elect to position the view using auto layout by adding your own constraints, you must set this property to NO. IB will do this for you.

调试

Symbolic Breakpoint: UIViewAlertForUnsatisfiableConstraints

  1. 打开断点导航(cmd+7)
  2. 点击左下角的+按钮
  3. 选择Add Symbolic Breakpoint
  4. 在Symbol添加UIViewAlertForUnsatisfiableConstraints; Action 添加__"po [[UIWindow keyWindow] autolayoutTrace]"或 "expr -l objc++ -O -- [[UIWindow keyWindow] autolayoutTrace]"(Swift) 或者LLDB 调试找到 AMBIGUOUS 点。

iOS10 约束问题

大家应该都有碰到取到的视图为1000*1000的。主要问题是在View的 awakeFromNib,或者VC的viewDidLoad,获取当前视图的frame或者bounds的size布局会导致界面异常。

解决方案:

  1. 全部用autolayout布局,不取frame或者bounds
  2. awakeFromNib,或者viewDidLoad要使用frame或者bounds前,先调用视图的layoutIfNeeded。这个要注意,有发现viewDidLoad调用后,取到的frame的origin还是错误的,不过size是对的.
  3. 在View的layoutSubviews或者VC的 viewDidLayoutSubviews再去获取当前视图的frame或者bounds布局
上一篇 下一篇

猜你喜欢

热点阅读