Objective-C语言——AutoLayout自动布局


#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

  

    /*

        AutoLayout 由来

     iOS6之后出现的一种新的布局方式,用于取代原先的 Autoresizing 系统的布局方式

     

     AutoLayer 是指定视图和父视图 视图和兄弟视图的关系来布局

     

     AutoLayer 当中,我们使用约束来描述视图与视图之间的关系

     

     OC 专门为开发者封装了一个类 NSLayoutConstraint 来帮助开发者描述布局

     */

    

//    [NSLayoutConstraint constraintWithItem:<#(nonnull id)#> attribute:<#(NSLayoutAttribute)#> relatedBy:<#(NSLayoutRelation)#> toItem:<#(nullable id)#> attribute:<#(NSLayoutAttribute)#> multiplier:<#(CGFloat)#> constant:<#(CGFloat)#>];

    /*

     参数的意义:

     Item:约束中两个视图对象

     attribute:描述视图的对齐特征

     relatedBy:描述两个视图 attribute 关系

     multiplier:缩放比例

     constant:偏移量

     

     视图1Item.属性(attribute  关系(relatedBy 视图2Item.属性(attribute*缩放比例(multiplier + 偏移量(constant

     

     

     视图1.左边 == 视图2.左边 * 1 + 0

     [NSLayoutConstraint constraintWithItem:视图1 attribute:左边 relatedBy:等于 toItem:视图2 [attribute:左边 multiplier:1 constant:0];

     

     

     视图1.宽度 == 100

     [NSLayoutConstraint constraintWithItem:视图1 attribute:宽度 relatedBy:等于 toItem: nil attribute:宽度 multiplier:1 constant:100];

     

     */

    UIView *view1 = [UIView new];

    view1.backgroundColor = [UIColor purpleColor];

    //启动 autoLayer 布局

    view1.translatesAutoresizingMaskIntoConstraints = NO;

    [self.view addSubview:view1];

    // X

    NSLayoutConstraint *constraintX = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0];

    [self.view addConstraint:constraintX];

    

    // Y

    NSLayoutConstraint *constraintY = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];

    [self.view addConstraint:constraintY];

    

    // 宽度

    NSLayoutConstraint *constraintWidth = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1 constant:100];

    [self.view addConstraint:constraintWidth];

    //高度

    NSLayoutConstraint *constraintHeight = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1 constant:100];


   [self.view addConstraint:constraintHeight];

    

    

    UIView *view2 = [[UIView alloc] init];

    view2.backgroundColor = [UIColor yellowColor];

    

    

    //布局启动

    view2.translatesAutoresizingMaskIntoConstraints = NO;

    [self.view addSubview:view2];

    

    NSLayoutConstraint *constraintX2 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeTrailing multiplier:1 constant:0];

    [self.view addConstraint:constraintX2];

    

    NSLayoutConstraint *constraintY2 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeBottom multiplier:1 constant:0];

    [self.view addConstraint:constraintY2];

    

    

    NSLayoutConstraint *constraintWidth2 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];

    [self.view addConstraint:constraintWidth2];

    

    NSLayoutConstraint *constraintHeight2 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeHeight multiplier:1 constant:0];

    [self.view addConstraint:constraintHeight2];

    


    

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值