iOS几种不同方式的适配

 

a3d4de19c348da142bb29ccca1f6efaf029.jpg

  • 代码适配

此种方式最为繁琐,不仅要各种乱七八糟一顿算,还要各种宽高,建议是简单界面还好 ,复杂界面,实在是麻烦

- (void)codeAdaptation{
    
    self.bgview.frame = CGRectMake(15, 50, [UIScreen mainScreen].bounds.size.width-30, 250);
    self.topview.frame = CGRectMake(30, 15, self.bgview.frame.size.width - 60 , 80);
    self.leftview.frame = CGRectMake(30, 15+80+20, 100, 100);
    self.rightview.frame = CGRectMake(self.bgview.frame.size.width-30-100, 15+80+20, 100, 100);
}
  • 接下来是常用的三方Masonry适配

这个方法就简单很多,链式

- (void)masonryAdaptation{
    
    [self.bgview mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.left.mas_equalTo(self.view.mas_left).mas_offset(15);
        make.right.mas_equalTo(self.view.mas_right).mas_offset(-15);
        make.top.mas_equalTo(self.view.mas_top).mas_offset(50);
        make.height.mas_equalTo(250);
    }];
    [self.topview mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.left.mas_equalTo(self.bgview.mas_left).mas_offset(30);
        make.right.mas_equalTo(self.bgview.mas_right).mas_offset(-30);
        make.top.mas_equalTo(self.bgview.mas_top).mas_offset(15);
        make.height.mas_equalTo(80);
    }];
    [self.leftview mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.left.mas_equalTo(self.topview.mas_left);
        make.top.mas_equalTo(self.topview.mas_bottom).mas_offset(20);
        make.height.width.mas_equalTo(100);
    }];
    [self.rightview mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.right.mas_equalTo(self.topview.mas_right);
        make.top.mas_equalTo(self.leftview.mas_top);
        make.height.width.mas_equalTo(100);
    }];
}

Masonry适配一定要注意一点,在是配置前一定要保证,视图已经addSubview了,否则就崩溃,

其中,适配使用

mas_makeConstraints:<#^(MASConstraintMaker *make)block#>

更新约束使用

mas_updateConstraints:<#^(MASConstraintMaker *make)block#>

比例约束的时候使用multipliedBy比如上边的代码修改为

 [self.rightview mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.right.mas_equalTo(self.topview.mas_right);
        make.top.mas_equalTo(self.leftview.mas_top);
        make.height.width.mas_equalTo(self.leftview.mas_width).multipliedBy(0.5);
    }];

那么显示就成了

926dd726cdc359c62a90b92c2b4af3c0950.jpg

这样子

日常常用的基本就是这些

另外

masonry适配使用mas_equalTo和equalto的时候,要注意mas是宏定义可以看出来是

#define mas_equalTo(...)                 equalTo(MASBoxValue((__VA_ARGS__)))

完整的是

#define mas_equalTo(...)                 equalTo(MASBoxValue((__VA_ARGS__)))
#define mas_greaterThanOrEqualTo(...)    greaterThanOrEqualTo(MASBoxValue((__VA_ARGS__)))
#define mas_lessThanOrEqualTo(...)       lessThanOrEqualTo(MASBoxValue((__VA_ARGS__)))

#define mas_offset(...)                  valueOffset(MASBoxValue((__VA_ARGS__)))


#ifdef MAS_SHORTHAND_GLOBALS

#define equalTo(...)                     mas_equalTo(__VA_ARGS__)
#define greaterThanOrEqualTo(...)        mas_greaterThanOrEqualTo(__VA_ARGS__)
#define lessThanOrEqualTo(...)           mas_lessThanOrEqualTo(__VA_ARGS__)

#define offset(...)                      mas_offset(__VA_ARGS__)

#endif
  • 最后一种,就是使用sb或者xib的时候很好用的布局了

比如上边的我们只需要挨个添加约束就好了

此时添加约束 你可以自己选中之后按住control不松手 然后拖动出现那条线就会出现布局比如

15393ca3f78c74698b5d752cc358b132deb.jpg

点击选中你想要添加的即可

或者是点击b28d35b6b1f956cdd7761b03404d766e806.jpg

也会出现添加约束

5873bc390e6d3d4f811277c96e994d0c7ef.jpg

也是添加你想要的约束即可

当然你甚至可以在xib或者sb上边直接操作

但是三种方式的效果都是一样的

按照我们的思路,我们需要固定左右上边距,自身高度,宽度自适应,那么添加好的约束就是

7d3d2d38366763068246fcd6a043a65b907.jpg

这样子

点击右边的尺子 我们还可以继续调整

5036a2e5f672e33268adc2221eea2204b94.jpg

某些情况下 我们还可以设置最大最小

487c128f6c890a55ebdc050cc92f9e0b44e.jpg

就像这样子 都是可以的

点击这里fe0b0f601fc35de6815dd603ec3aa4b803f.jpg

可以清除你所添加的约束

 

转载于:https://my.oschina.net/rainwz/blog/2056193

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值