Coding layout 布局約束--ios

1.設置所約束控件的 translatesAutoresizingMaskIntoConstraints 屬性

/*

UIView *blueView = [[UIView alloc]init];

blueView.backgroundColor = [UIColor blueColor];

[self.view addSubview:blueView];

blueView.translatesAutoresizingMaskIntoConstraints = NO;

*/

2.添加對應的約束,如”上,下,左,右“各邊距

方法 一 : constraintWithItem:(nonnull id) attribute:(NSLayoutAttribute) relatedBy:(NSLayoutRelation) toItem:(nullable id) attribute:(NSLayoutAttribute) multiplier:(CGFloat) constant:(CGFloat)

參數:constraintWithItem:(nonnull id) ----所約束的控件對象

? ? ? ? ?attribute:(NSLayoutAttribute) -----所約束的位置類型 (枚舉)

? ? ? ? ?relatedBy:(NSLayoutRelation)------與相對控件的關系(枚舉)

? ? ? ? ?toItem:(nullable id) ------ 約束所相對的控件對象

? ? ? ? ?attribute:(NSLayoutAttribute)-------約束相對的位置類型(枚舉)

? ? ? ? ?multiplier:(CGFloat) ------ 比例因子 ((約束控件 + constant值 ) X 比例因子)

? ? ? ? ? constant:(CGFloat) ------ 間隔 (左、上正值 右下負值)

/*

//設置左

NSLayoutConstraint *layoutL = [NSLayoutConstraint constraintWithItem:blueView attribute:(NSLayoutAttributeLeft) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:(NSLayoutAttributeLeft) multiplier:1 constant:10];

[self.view addConstraint:layoutL];

//設置右

NSLayoutConstraint *layoutR = [NSLayoutConstraint constraintWithItem:blueView attribute:(NSLayoutAttributeRight) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:(NSLayoutAttributeRight) multiplier:1 constant:-10];

[self.view addConstraint:layoutR];

//設置上

NSLayoutConstraint *layoutT = [NSLayoutConstraint constraintWithItem:blueView attribute:(NSLayoutAttributeTop) relatedBy:(NSLayoutRelationEqual) toItem:self.view attribute:(NSLayoutAttributeTop) multiplier:1 constant:40];

[self.view addConstraint:layoutT];

//設置下

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*)

參數:VisualFormat:(nonnull NSString *)----使用了VFL語法 (可參考相關語法)

? ? ? ? ? options:(NSLayoutFormatOptions)----枚舉可選默認為0

? ? ? ? ? metrics:(nullable NSDictionary*)---一般為nil?

? ? ? ? ? ?views:(nonnull NSDictionary*) ------ 就是上面所加入到NSDictionary中的綁定的View

約束添加規則:

1)對于兩個同層級view之間的約束關系,添加到它們的父view上

2)對于兩個不同層級view之間的約束關系,添加到他們最近的共同父view上

3)對于有層次關系的兩個view之間的約束關系,添加到層次較高的父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];

*/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容