iOS 之系统的autoLayou自动t布局

在storyBoard中自动布局时,要注意内容吸附优先级的问题,数值越大,优先级越高,就越能保持住本身的样子;

约束添加的原则:约束添加到父view上,如果没有父view,可以添加到共同的父别上(也就是爷爷辈,依次网上推),如果是宽度,高度可以添加到自己身上。



#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [superviewDidLoad];

    UIView  *blueView = [[UIViewalloc]init];

    blueView.backgroundColor = [UIColorblueColor];

    

    [self.viewaddSubview:blueView];

    

#warning  一定要把view  autoresizing属性给禁用掉

    blueView.translatesAutoresizingMaskIntoConstraints =NO;

    

    

    // 创建redView

    UIView  *redView = [[UIViewalloc]init];

    redView.backgroundColor = [UIColorredColor];

    

    [self.viewaddSubview:redView];

    

    redView.translatesAutoresizingMaskIntoConstraints =NO;

    

    

    // 添加blueView顶部的约束

    /**

     withItem 被约束的view

     attribute :被约束view的属性

     

     relatedBy

     NSLayoutRelationLessThanOrEqual = -1,

     NSLayoutRelationEqual = 0,

     NSLayoutRelationGreaterThanOrEqual

     

     toItem 参照的view

     attribute 参照view属性

     */

    NSLayoutConstraint *blueTop = [NSLayoutConstraintconstraintWithItem:blueView

                                                               attribute:NSLayoutAttributeTop

                                                               relatedBy:NSLayoutRelationEqual

                                                                  toItem:self.view

                                                               attribute:NSLayoutAttributeTop

                                                              multiplier:1

                                                                constant:20];

    

    // 把约束添加到 控制的view

    [self.view addConstraint:blueTop];

    

    

    // 添加blueView 的左侧约束

    NSLayoutConstraint *blueLeft = [NSLayoutConstraintconstraintWithItem:blueView

                                                                attribute:NSLayoutAttributeLeft

                                                                relatedBy:NSLayoutRelationEqual

                                                                   toItem:self.view

                                                                attribute:NSLayoutAttributeLeft

                                                               multiplier:1

                                                                 constant:20];

    

    // 把左侧的约束添加到控制器的view

    [self.view addConstraint:blueLeft];

    

    

    // blueView 右侧的约束

    NSLayoutConstraint *blueRight = [NSLayoutConstraintconstraintWithItem:blueView

                                                                 attribute:NSLayoutAttributeRight

                                                                 relatedBy:NSLayoutRelationEqual

                                                                    toItem:self.view

                                                                 attribute:NSLayoutAttributeRight

                                                                multiplier:1

                                                                  constant:-20];

    

    [self.view addConstraint:blueRight];

    

    // 添加blueView高度

    

    NSLayoutConstraint *blueHeight = [NSLayoutConstraintconstraintWithItem:blueView

                                                                  attribute:NSLayoutAttributeHeight

                                                                  relatedBy:NSLayoutRelationEqual

                                                                     toItem:nil  // 没有参照view就传nil

                                                                  attribute:NSLayoutAttributeNotAnAttribute//属性

                                                                 multiplier:1

                                                                   constant:40];

    

//    [self.view addConstraint:blueHeight];

    [blueView addConstraint:blueHeight];

    

    

    // 设置 redView 顶部的约束

    NSLayoutConstraint *redTop = [NSLayoutConstraintconstraintWithItem:redView

                                                                 attribute:NSLayoutAttributeTop

                                                                 relatedBy:NSLayoutRelationEqual

                                                                    toItem:blueView

                                                                 attribute:NSLayoutAttributeBottom

                                                                multiplier:1

                                                                  constant:20];

    

    [self.view addConstraint:redTop];

    

    

    // 设置 redView 右侧的约束

    NSLayoutConstraint *redRight = [NSLayoutConstraintconstraintWithItem:redView

                                                                attribute:NSLayoutAttributeTrailing

                                                                relatedBy:NSLayoutRelationEqual

                                                                   toItem:blueView

                                                                attribute:NSLayoutAttributeTrailing

                                                               multiplier:1

                                                                 constant:0];

    

    [self.view addConstraint:redRight];

    

    

    // 设置 redView 高度的约束

    NSLayoutConstraint *redHeight = [NSLayoutConstraintconstraintWithItem:redView

                                                                 attribute:NSLayoutAttributeHeight

                                                                 relatedBy:NSLayoutRelationEqual

                                                                    toItem:blueView

                                                                 attribute:NSLayoutAttributeHeight

                                                                multiplier:1

                                                                  constant:0];

    

    [self.view addConstraint:redHeight];

    

    

    // redView 宽度约束

    NSLayoutConstraint *redWidth = [NSLayoutConstraintconstraintWithItem:redView

                                                                attribute:NSLayoutAttributeWidth

                                                                relatedBy:NSLayoutRelationEqual

                                                                   toItem:blueView

                                                                attribute:NSLayoutAttributeWidth

                                                               multiplier:0.5

                                                                 constant:0];

    

    // 如果有参照就不要把约束添加到自己身上

    [self.view addConstraint:redWidth];

    

}




@end


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值