【iOS开发】——masonry的基本使用

2 篇文章 0 订阅
本文介绍了如何使用CocoaPods安装Masonry,并通过示例展示了Masonry的基本用法,如mas_makeConstraints、mas_updateConstraints和mas_remakeConstraints,用于在不同屏幕尺寸的iOS设备上实现视图的自动布局,确保控件不会因屏幕大小差异而变形。
摘要由CSDN通过智能技术生成

在写OC的UI时,当在不同的机型上运行时,如果只用frame则会导致视图中的控件严重变形,这是因为不同机型的屏幕大小不一样,所以这周学习了masonry,掌握了一些基本用法。
在使用第三方库Masonry之前,需要先安装CocoaPods。

CocoaPods的安装

安装教程

安装好后,创建一个工程“test2”,创建结束后在终端输入以下代码:

cd /Users/haoqianbiao/Desktop/test2  //文件的路径

然后在终端输入:

touch PodFile

之后我们的文件里就多了一个Podfile的文件请添加图片描述

然后在该文件里输入:

platform :ios, '7.0'
target 'test2' do
pod 'Masonry'
end
//target后面的单引号里是你工程的名字

最后一步:

pod install

生成新的*.xcworkspace文件:
之后就直接打开xcworkspace文件进行编程就可以了。

Masonry的基本使用

三个约束和基础API

/添加新约束

- (NSArray *)mas_makeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;

//更新约束,会覆盖之前的约束

- (NSArray *)mas_updateConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;

//完全移除旧约束,添加新约束(重置)

- (NSArray *)mas_remakeConstraints:(void(NS_NOESCAPE ^)(MASConstraintMaker *make))block;

equalTo()       参数是对象类型,一般是视图对象或者mas_width这样的坐标系对象
mas_equalTo()   和上面功能相同,参数可以传递基础数据类型对象,可以理解为比上面的API更强大

width()         用来表示宽度,例如代表view的宽度
mas_width()     用来获取宽度的值。和上面的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象的值

示例:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UILabel* label = [[UILabel alloc] init];
    [self.view addSubview:label];
    [label mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(self.view);
                            make.top.equalTo(self.view).offset(100);
                             make.size.mas_equalTo(CGSizeMake(200, 50));
    }];
    label.backgroundColor = [UIColor blackColor];
    UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.view addSubview:button];
    [button mas_makeConstraints:^(MASConstraintMaker *make) {
        make.centerX.equalTo(label);
        make.top.equalTo(label.mas_bottom).offset(100);
        make.size.mas_equalTo(CGSizeMake(200, 50));
    }];
    [button setBackgroundColor:[UIColor yellowColor]];
    [button setTitle:@"更新约束" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(press:) forControlEvents:UIControlEventTouchUpInside];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
}

-(void) press:(UIButton*) btn {
    [btn mas_updateConstraints:^(MASConstraintMaker *make) {
        make.size.mas_equalTo(CGSizeMake(100, 100));
    }];
}

效果:
请添加图片描述

请添加图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值