iOS开发Masonry与Frame布局差异示例详解

 更新时间:2023年11月09日 11:17:27   作者:FieryDragon  
这篇文章主要为大家介绍了iOS开发Masonry与Frame布局差异示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

 iOS开发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

结果

iOS14.1 iPhone6s
view1:14.500000,346.000000,90.000000,346.455622
view2:172.500000,90.000000
view3:172.455621,89.795858

iOS16.4 iPhone14
view1:14.333333,361.333333,89.666667,361.455622
view2:172.333333,89.666667
view3:172.455621,89.795858

自动布局时系统会根据屏幕分辨率将传入的数值转换为最接近屏幕分辨率展示的大小

如:

view1中传入的左右大小为14.272189,在iPhone6s(2x)中最接近能展示的14.5,故自动布局后宽为346.0(375.0-14.5-14.5);在iPhone14(3x)中最接近能展示的14.33333,故自动布局后宽为361.333333(390.0-14.33333-14.33333)。

view2宽度在iPhone14(3x)中最接近能展示的172.333333(与172.333333相差0.122288,与172.666667相差0.211046)。

注意:如UILabel未设置其具体高度,Masonry会根据其展示需要的宽高(可通过boundingRectWithSize...方法获取)及屏幕分辨率向上适配至最小宽高

以上就是iOS开发Masonry与Frame布局差异示例详解的详细内容,更多关于iOS Masonry Frame布局差异的资料请关注脚本之家其它相关文章!

相关文章

  • iOS改变UITextField占位文字颜色的三种方法

    iOS改变UITextField占位文字颜色的三种方法

    这篇文章主要为大家详细介绍了iOS改变UITextField的占位文字颜色的三种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • iOS验证手机号的正则表达式

    iOS验证手机号的正则表达式

    这篇文章主要为大家详细介绍了iOS验证手机号的正则表达式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • iOS实现手机获取验证码倒计时效果

    iOS实现手机获取验证码倒计时效果

    这篇文章主要为大家详细介绍了iOS实现手机获取验证码倒计时效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • iOS读取txt文件出现中文乱码的解决方法

    iOS读取txt文件出现中文乱码的解决方法

    这篇文章主要为大家详细介绍了iOS读取txt文件出现中文乱码的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • iOS开发retina屏幕下的点与像素关系详解

    iOS开发retina屏幕下的点与像素关系详解

    这篇文章主要为大家介绍了iOS开发retina屏幕下的点与像素关系详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • iOS App中UILabel的自定义及在Auto Layout中的使用

    iOS App中UILabel的自定义及在Auto Layout中的使用

    这篇文章主要介绍了iOS App中UILabel的自定义及在Auto Layout中的使用,示例代码为传统的Objective-C语言,需要的朋友可以参考下
    2016-03-03
  • iOS开发教程之单例使用问题详析

    iOS开发教程之单例使用问题详析

    这篇文章主要给大家介绍了关于iOS开发教程之单例使用问题的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • iOS安全防护系列之ptrace反调试与汇编调用系统方法详解

    iOS安全防护系列之ptrace反调试与汇编调用系统方法详解

    这篇文章主要给大家介绍了关于iOS安全防护系列之ptrace反调试与汇编调用系统方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • IOS自适配利器Masonry使用指南

    IOS自适配利器Masonry使用指南

    如果说自动布局解救了多屏幕适配,那众多三方库的出现就解救了系统自动布局的写法。Masonry就是其中一个。用法上也比较简单灵活,很大程度上替代了传统的NSLayoutConstraint布局方式。下面我们就来具体探讨下吧
    2016-01-01
  • iOS动态调整UILabel高度的几种方法

    iOS动态调整UILabel高度的几种方法

    在iOS编程中UILabel是一个常用的控件,下面这篇文章主要给大家介绍了关于iOS动态调整UILabel高度的几种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-12-12

最新评论