日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AutoLayout自动布局,NSLayoutConstraint 视图约束使用

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AutoLayout自动布局,NSLayoutConstraint 视图约束使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.方法

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:<#(id)#> attribute:<#(NSLayoutAttribute)#> relatedBy:<#(NSLayoutRelation)#> toItem:<#(id)#> attribute:<#(NSLayoutAttribute)#> multiplier:<#(CGFloat)#> constant:<#(CGFloat)#>]

?

Item:要約束的控件 attribute:要約束的控件約束的類型(做怎樣的約束) relatedBy:與參照控件之間的關系 toItem:參照的控件 attribute:參照的控件約束的類型(做怎樣的約束) multiplier:約束的控件和參照的控件關系倍數 constant:常量 最后兩個參數計算關系: view1.property1 =(view2.property2 * multiplier)+ constant?

?

二.Autolayout的常見警告和錯誤

1.警告 控件的frame不匹配所添加的約束, 比如:約束控件的寬度為150, 而控件現在的寬度是160 2.錯誤 缺乏必要的約束, 比如:只約束了寬度和高度, 沒有約束具體的位置 兩個約束沖突,比如:1個約束控件的寬度為150, 1個約束控件的寬度為160

三.例子

1.代碼實現:

ViewController.m

1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad { 10 [super viewDidLoad]; 11 //創建添加blueview 12 UIView *blueView=[[UIView alloc] init]; 13 blueView.backgroundColor = [UIColor blueColor]; 14 blueView.translatesAutoresizingMaskIntoConstraints = NO;//禁止Autoresizing 15 [self.view addSubview:blueView]; 16 17 //創建添加redView 18 UIView *redView=[[UIView alloc] init]; 19 redView.backgroundColor = [UIColor redColor]; 20 redView.translatesAutoresizingMaskIntoConstraints = NO; 21 [self.view addSubview:redView]; 22 23 // 1.0父View左邊 約束 blueView左邊 30 24 NSLayoutConstraint *blueLeftCon=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:30.0]; 25 [self.view addConstraint:blueLeftCon]; 26 27 // 1.1父View頂部 約束 blueView頂部 30 28 NSLayoutConstraint *blueTopCon=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:30.0 ]; 29 [self.view addConstraint:blueTopCon]; 30 31 // 1.2父View右邊 約束 blueView右邊 30 32 NSLayoutConstraint *blueRightCon= [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-30 ]; 33 [self.view addConstraint:blueRightCon]; 34 35 // 1.3 blueView 相當于 高度設置成50 36 NSLayoutConstraint *blueHeightCon=[NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:0 multiplier:0 constant:50]; 37 [blueView addConstraint:blueHeightCon]; 38 39 //2.0 redView 頂部 和 blueView 底部 間距20 40 NSLayoutConstraint *redTopCon=[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:20]; 41 [self.view addConstraint:redTopCon]; 42 43 //2.1 redView 左邊 和 blueView 水平中心線對齊 44 NSLayoutConstraint *redLeftCon=[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0]; 45 [self.view addConstraint:redLeftCon]; 46 47 //2.2 redView 右邊 參照 blueView 右邊對齊 48 NSLayoutConstraint *redRightCon = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0]; 49 [self.view addConstraint:redRightCon]; 50 51 //2.3 redView 高度 參照 blueView 高度相等 52 NSLayoutConstraint *redHeightCon=[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0]; 53 [self.view addConstraint:redHeightCon]; 54 55 } 56 57 @end View Code

?

2.storyboard實現:??

效果:

?

轉載于:https://www.cnblogs.com/zakers/p/4751354.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的AutoLayout自动布局,NSLayoutConstraint 视图约束使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。