IOS(UI)_AutoLayout(自动布局)

<span style="font-size:18px;">#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    /*
     AutoLayout 由来
     iOS之后出现的一种新的布局方式,用于取代原先的Autoresizing系统的布局方方式
     
     AutoLayout是制定视图和父视图 或 视图和兄弟视图的关系布局
     
     在AutoLayout当中,我们使用约束来描述视图与视图之间的关系
     
     OC专门为开发者封装了一个类NSLayoutConstraint 来帮助开发者描述布局
     */
    
//    [NSLayoutConstraint constraintWithItem:<#(nonnull id)#> attribute:<#(NSLayoutAttribute)#> relatedBy:<#(NSLayoutRelation)#> toItem:<#(nullable id)#> attribute:<#(NSLayoutAttribute)#> multiplier:<#(CGFloat)#> constant:<#(CGFloat)#>];
    
    /*
     参数的意义:
     item:约束中两个视图对象
     attribute:描述视图的对齐特征
     rekatedBy:描述两个视图attribute关系
     multiplier:缩放比例
     constant:偏移量
     
     视图1.属性  关系  视图2.属性*缩放比例 + 偏移量
     
     视图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 redColor];
    //启动autolayout布局
    View1.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:View1];
    
    NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:View1 attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:10];
    [self.view addConstraint:constraint1];
    
    NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:View1 attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterY multiplier:1 constant:0];
    [self.view addConstraint:constraint2];
    
    NSLayoutConstraint *constraint3 = [NSLayoutConstraint constraintWithItem:View1 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1 constant:100];
    [self.view addConstraint:constraint3];
    
    NSLayoutConstraint *constraint4 = [NSLayoutConstraint constraintWithItem:View1 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1 constant:100];
    [self.view addConstraint:constraint4];
    
    
    
    UIView *View2 = [UIView new];
    View2.backgroundColor = [UIColor greenColor];
    View2.translatesAutoresizingMaskIntoConstraints = NO;  //启动布局
    [self.view addSubview:View2];
    
    NSLayoutConstraint *constraint5 = [NSLayoutConstraint constraintWithItem:View2 attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:View1 attribute:NSLayoutAttributeTrailing multiplier:1 constant:0];
    [self.view addConstraint:constraint5];
    
    NSLayoutConstraint *constraiont6 = [NSLayoutConstraint constraintWithItem:View2 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:View1 attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
    [self.view addConstraint:constraiont6];
    
    NSLayoutConstraint *constraint7 = [NSLayoutConstraint constraintWithItem:View2 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:View1 attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0];
    [self.view addConstraint:constraint7];
    
    NSLayoutConstraint *constraint8 = [NSLayoutConstraint constraintWithItem:View2 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:View1 attribute:NSLayoutAttributeHeight multiplier:1 constant:0];
    [self.view addConstraint:constraint8];
    
    
    
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

</span>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值