用代码完成Autolayout约束

来源:互联网 发布:安卓音乐软件 编辑:程序博客网 时间:2024/04/29 22:28

讲道理,用Autolayout还是在storyboard里面设置的好。

首先,一个约束就是一个NSLayoutConstraint对象。
创建好NSLayoutConstraint对象后,就可以用下面两个方法添加到相关的View上

- (void)addConstraint:(NSLayoutConstraint *)constraint;- (void)addConstraint:(NSArray *)constraints;

注意点
1. view.translateAutoresizingMaskIntoConstraints = NO;(约束加在哪个view上,就设置那个view)
2. 不设置frame
3. 保证控件都已经在各自的父控件上

添加约束的规则:

  1. 对于两个同层级View之间的约束关系,添加到它们的父控件View上
  2. 两个不同层级View之间的约束关系,添加到它们最近共同父View上
  3. 对于有层次关系的两个view之间的约束关系,添加到层次较高的父view上

对于创建一个约束的参数。请参照storyboard中的参数对照。

当然,苹果同样创建了一门语言,专门用来创建约束

VFL语言(Visual Format Language)可视化格式语言

示例:

H:[cancelButton[72]]-12-[acceptButton[50]]// cancelButton宽72,acceptButton宽50,两个水平间隔12

用到的是NSLayouConstraint的一个类方法

+ (void)constraintWithVisualFormat:(NSString *)format options:(NSLayoutFormatOptions)opts metrics:(NSDictionary *)metrics views:(NSDictionary *)views;

该语句不支持乘数法,要使用乘除法,还得使用原始的代码

用法:可以将约束拖进controller,拥有它,然后修改它的值,可实动画的效果。

注:storyboard用Autolayout来适配屏幕,然后sizeclass 横竖屏适配等等

0 0
原创粉丝点击