VFL(Visual Format Language)
简单说明:
H 横向
V 纵向
| 父视图边缘
- 默认距离
[viewName(30)] view用[]扩住,不能有self之类的关键字(会报错,原因后续),view的宽或者高为30
- 10 - 两者间距10
[viewName(>=60@700)] view的宽或者高大于等于60(>=,==,<=),优先级为700(优先级最大为1000,数值越大越优先满足)
[view1][view2(==view1)] view1后接view2,且view2的宽或者高于view1相等
PS:view的translatesAutoresizingMaskIntoConstraints一定要设置为NO。
UINavigationBar * LHNavigation = [[UINavigationBar alloc] init]; LHNavigation.translatesAutoresizingMaskIntoConstraints = NO;
UITabBar * LHTabBar = [[UITabBar alloc] init];
LHTabBar.translatesAutoresizingMaskIntoConstraints = NO;
UITableView * LHTable = [[UITableView alloc] init];
LHTable.translatesAutoresizingMaskIntoConstraints = NO;
//添加垂直方向的约束
NSNumber *margin = @20;
//等同于 NSDictionary *mertrics = [NSDictionary dictionaryWithObjectsAndKeys:20, @"margin", nil]
NSDictionaryOfVariableBindings(margin);
NSDictionary *mertrics = NSDictionaryOfVariableBindings(margin);
NSString *vflV = @"V:|-margin-[LHNavigation]-[LHTable]-[LHTabBar]-|";
NSDictionary * views = NSDictionaryOfVariableBindings(LHNavigation,LHTabBar,LHTable);
NSArray * constraintsV = [NSLayoutConstraint constraintsWithVisualFormat:vflV options:0 metrics:mertrics views:views];
[self.view addConstraints:constraintsV] ;