iOS開發(fā)Masonry與Frame布局差異示例詳解
iOS開發(fā)Masonry與Frame布局差異
示例
#import "ViewController.h" #import <Masonry/Masonry.h> @interface ViewController () @property (nonatomic, strong)UIView *view1; @property (nonatomic, strong)UIView *view2; @property (nonatomic, strong)UIView *view3; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self.view addSubview:self.view1]; [self.view addSubview:self.view2]; [self.view addSubview:self.view3]; [self.view1 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(14.272189); make.right.mas_equalTo(-14.272189); make.top.mas_equalTo(50); make.height.mas_equalTo(89.795858); }]; [self.view2 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(30); make.top.mas_equalTo(200); make.size.mas_equalTo(CGSizeMake(172.455621, 89.795858)); }]; self.view3.frame = CGRectMake(30, 400, 172.455621, 89.795858); } - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; NSLog(@"view1:%lf,%lf,%lf,%lf",self.view1.frame.origin.x,self.view1.frame.size.width,self.view1.frame.size.height,self.view.frame.size.width-(14.272189*2)); NSLog(@"view2:%lf,%lf",self.view2.frame.size.width,self.view2.frame.size.height); NSLog(@"view3:%lf,%lf",self.view3.frame.size.width,self.view3.frame.size.height); } #pragma mark - - (UIView *)view1 { if (!_view1) { _view1 = [[UIView alloc] init]; _view1.backgroundColor = [UIColor redColor]; } return _view1; } - (UIView *)view2 { if (!_view2) { _view2 = [[UIView alloc] init]; _view2.backgroundColor = [UIColor blueColor]; } return _view2; } - (UIView *)view3 { if (!_view3) { _view3 = [[UIView alloc] init]; _view3.backgroundColor = [UIColor yellowColor]; } return _view3; } @end
結(jié)果
iOS14.1 iPhone6s
view1:14.500000,346.000000,90.000000,346.455622
view2:172.500000,90.000000
view3:172.455621,89.795858iOS16.4 iPhone14
view1:14.333333,361.333333,89.666667,361.455622
view2:172.333333,89.666667
view3:172.455621,89.795858
自動(dòng)布局時(shí)系統(tǒng)會(huì)根據(jù)屏幕分辨率將傳入的數(shù)值轉(zhuǎn)換為最接近屏幕分辨率展示的大小。
如:
view1中傳入的左右大小為14.272189,在iPhone6s(2x)中最接近能展示的14.5,故自動(dòng)布局后寬為346.0(375.0-14.5-14.5);在iPhone14(3x)中最接近能展示的14.33333,故自動(dòng)布局后寬為361.333333(390.0-14.33333-14.33333)。
view2寬度在iPhone14(3x)中最接近能展示的172.333333(與172.333333相差0.122288,與172.666667相差0.211046)。
注意:如UILabel未設(shè)置其具體高度,Masonry會(huì)根據(jù)其展示需要的寬高(可通過(guò)boundingRectWithSize...方法獲?。┘捌聊环直媛氏蛏线m配至最小寬高。
以上就是iOS開發(fā)Masonry與Frame布局差異示例詳解的詳細(xì)內(nèi)容,更多關(guān)于iOS Masonry Frame布局差異的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
iOS實(shí)現(xiàn)通過(guò)按鈕添加和刪除控件的方法
這篇文章主要為大家詳細(xì)介紹了iOS通過(guò)按鈕添加和刪除控件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03詳解iOS開發(fā)中使用storyboard創(chuàng)建導(dǎo)航控制器的方法
這篇文章主要介紹了iOS開發(fā)中使用storyboard創(chuàng)建導(dǎo)航控制器的方法,包括對(duì)控制器聲明周期的控制介紹,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01iOS簡(jiǎn)單抽屜效果的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了iOS簡(jiǎn)單抽屜效果的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08iOS中的實(shí)時(shí)遠(yuǎn)程配置全紀(jì)錄
這篇文章主要給大家介紹了關(guān)于iOS中實(shí)時(shí)遠(yuǎn)程配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01ios啟動(dòng)頁(yè)強(qiáng)制豎屏(進(jìn)入App后允許橫屏與豎屏)
最近工作遇到這樣一個(gè)需要,當(dāng)進(jìn)入啟動(dòng)頁(yè)需要強(qiáng)制豎屏,而進(jìn)入APP后就允許橫屏與豎屏,通過(guò)查找相關(guān)的資料找到了解決的方法,所以將實(shí)現(xiàn)的方法整理后分享出來(lái),需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2017-03-03iOS 微信分享功能簡(jiǎn)單實(shí)現(xiàn)
本文介紹了iOS 微信分享功能的實(shí)現(xiàn)步驟與方法,具有一定的參考作用。下面跟著小編一起來(lái)看下吧2017-01-01