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ù)其展示需要的寬高(可通過boundingRectWithSize...方法獲?。┘捌聊环直媛氏蛏线m配至最小寬高。
以上就是iOS開發(fā)Masonry與Frame布局差異示例詳解的詳細(xì)內(nèi)容,更多關(guān)于iOS Masonry Frame布局差異的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
iOS驗(yàn)證手機(jī)號(hào)的正則表達(dá)式
這篇文章主要為大家詳細(xì)介紹了iOS驗(yàn)證手機(jī)號(hào)的正則表達(dá)式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
iOS實(shí)現(xiàn)手機(jī)獲取驗(yàn)證碼倒計(jì)時(shí)效果
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)手機(jī)獲取驗(yàn)證碼倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
iOS開發(fā)retina屏幕下的點(diǎn)與像素關(guān)系詳解
這篇文章主要為大家介紹了iOS開發(fā)retina屏幕下的點(diǎn)與像素關(guān)系詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
iOS App中UILabel的自定義及在Auto Layout中的使用
這篇文章主要介紹了iOS App中UILabel的自定義及在Auto Layout中的使用,示例代碼為傳統(tǒng)的Objective-C語言,需要的朋友可以參考下2016-03-03
iOS安全防護(hù)系列之ptrace反調(diào)試與匯編調(diào)用系統(tǒng)方法詳解
這篇文章主要給大家介紹了關(guān)于iOS安全防護(hù)系列之ptrace反調(diào)試與匯編調(diào)用系統(tǒng)方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
iOS動(dòng)態(tài)調(diào)整UILabel高度的幾種方法
在iOS編程中UILabel是一個(gè)常用的控件,下面這篇文章主要給大家介紹了關(guān)于iOS動(dòng)態(tài)調(diào)整UILabel高度的幾種方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12

