iOS開(kāi)發(fā)Masonry與Frame布局差異示例詳解
iOS開(kāi)發(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開(kāi)發(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開(kāi)發(fā)中使用storyboard創(chuàng)建導(dǎo)航控制器的方法
這篇文章主要介紹了iOS開(kāi)發(fā)中使用storyboard創(chuàng)建導(dǎo)航控制器的方法,包括對(duì)控制器聲明周期的控制介紹,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01
iOS簡(jiǎn)單抽屜效果的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了iOS簡(jiǎn)單抽屜效果的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
iOS中的實(shí)時(shí)遠(yuǎn)程配置全紀(jì)錄
這篇文章主要給大家介紹了關(guān)于iOS中實(shí)時(shí)遠(yuǎn)程配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
ios啟動(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-03
iOS 微信分享功能簡(jiǎn)單實(shí)現(xiàn)
本文介紹了iOS 微信分享功能的實(shí)現(xiàn)步驟與方法,具有一定的參考作用。下面跟著小編一起來(lái)看下吧2017-01-01

