0531 - Autolayout 不仅可以做屏幕适配还可以做系统适配

uidynamic 做物理动画.能做的效果如下图:

iOS 进阶 第二十一天(0531)-LMLPHP


Autolayout

Autolayout 是一种“自动布局”技术,专门用来布局UI界面的.有了Autolayout,请忘记frame

Autolayout 要比 Autoresizing 强大,两者水火不相容

Autolayout的2个核心概念

  • 参照
  • 约束

使用代码实现Autolayout - VFL(Visual Format Language)

实现思路如下:

iOS 进阶 第二十一天(0531)-LMLPHP

NSLayoutConstraint的解释:

iOS 进阶 第二十一天(0531)-LMLPHP

将一个UIview添加到父控件view上,使用NSLayoutConstraint参照约束实现:

iOS 进阶 第二十一天(0531)-LMLPHP

iOS 进阶 第二十一天(0531)-LMLPHP


为了简化Autolayout苹果公司推出了VFL语言

iOS 进阶 第二十一天(0531)-LMLPHP

VFL示例1:

iOS 进阶 第二十一天(0531)-LMLPHP

运行结果:

iOS 进阶 第二十一天(0531)-LMLPHP

注意:里面的metrics是用来站位,就如[NSString StringWithFormat(@"%d", 10)]

如下图所示:

VFL示例2:

iOS 进阶 第二十一天(0531)-LMLPHP

运行结果:

iOS 进阶 第二十一天(0531)-LMLPHP


Autolayout对UILabel的影响,如下图:

iOS 进阶 第二十一天(0531)-LMLPHP


AutoLayout做动画

iOS 进阶 第二十一天(0531)-LMLPHP

注意:layoutIfNeeded方法是用来Autolayout做动画使用的.setNeedsDisplay是Quartz2D刷帧重绘DrawInrect:往界面view的layer图层上绘制东西时用的


05-11 22:43