1.設(shè)置所約束控件的 translatesAutoresizingMaskIntoConstraints 屬性
/*
UIView *blueView = [[UIView alloc]init];
blueView.backgroundColor = [UIColor blueColor];
[self.view addSubview:blueView];
blueView.translatesAutoresizingMaskIntoConstraints = NO;
*/
2.添加對應(yīng)的約束嘉裤,如”上伪节,下,左臀脏,右“各邊距
方法 一 : constraintWithItem:(nonnull id) attribute:(NSLayoutAttribute) relatedBy:(NSLayoutRelation) toItem:(nullable id) attribute:(NSLayoutAttribute) multiplier:(CGFloat) constant:(CGFloat)
參數(shù):constraintWithItem:(nonnull id) ----所約束的控件對象
? ? ? ? ?attribute:(NSLayoutAttribute) -----所約束的位置類型 (枚舉)
? ? ? ? ?relatedBy:(NSLayoutRelation)------與相對控件的關(guān)系(枚舉)
? ? ? ? ?toItem:(nullable id) ------ 約束所相對的控件對象
? ? ? ? ?attribute:(NSLayoutAttribute)-------約束相對的位置類型(枚舉)
? ? ? ? ?multiplier:(CGFloat) ------ 比例因子 ((約束控件 + constant值 ) X 比例因子)
? ? ? ? ? constant:(CGFloat) ------ 間隔 (左虏冻、上正值 右下負(fù)值)
/*
//設(shè)置左
NSLayoutConstraint *layoutL = [NSLayoutConstraint constraintWithItem:blueView attribute:(NSLayoutAttributeLeft) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:(NSLayoutAttributeLeft) multiplier:1 constant:10];
[self.view addConstraint:layoutL];
//設(shè)置右
NSLayoutConstraint *layoutR = [NSLayoutConstraint constraintWithItem:blueView attribute:(NSLayoutAttributeRight) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:(NSLayoutAttributeRight) multiplier:1 constant:-10];
[self.view addConstraint:layoutR];
//設(shè)置上
NSLayoutConstraint *layoutT = [NSLayoutConstraint constraintWithItem:blueView attribute:(NSLayoutAttributeTop) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:(NSLayoutAttributeTop) multiplier:1 constant:40];
[self.view addConstraint:layoutT];
//設(shè)置下
NSLayoutConstraint *layoutB = [NSLayoutConstraint constraintWithItem:blueView attribute:(NSLayoutAttributeBottom) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:(NSLayoutAttributeBottom) multiplier:1 constant:-400];
[self.view addConstraint:layoutB];
*/
方法 二 :constraintsWithVisualFormat:(nonnull NSString *) options:(NSLayoutFormatOptions) metrics:(nullable NSDictionary*) views:(nonnull NSDictionary*)
參數(shù):VisualFormat:(nonnull NSString *)----使用了VFL語法 (可參考相關(guān)語法)
? ? ? ? ? options:(NSLayoutFormatOptions)----枚舉可選默認(rèn)為0
? ? ? ? ? metrics:(nullable NSDictionary*)---一般為nil?
? ? ? ? ? ?views:(nonnull NSDictionary*) ------ 就是上面所加入到NSDictionary中的綁定的View
約束添加規(guī)則:
1)對于兩個同層級view之間的約束關(guān)系肤粱,添加到它們的父view上
2)對于兩個不同層級view之間的約束關(guān)系,添加到他們最近的共同父view上
3)對于有層次關(guān)系的兩個view之間的約束關(guān)系厨相,添加到層次較高的父view上
/*
NSArray *arry = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[blueView]-20-|" options:0 metrics:nil views:@{@"blueView":blueView}];
[self.view addConstraints:arry];
NSArray *arry1 = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[blueView]-20-|" options:0 metrics:nil views:@{@"blueView":blueView}];
[self.view addConstraints:arry1];
*/