iOS(学习5) 布局

AutoLayout由来

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

AutoLayout是指定视图和其父视图或视图和其兄弟视图的关系来布局

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

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

#import "ViewController.h"  

@interface ViewController ()  

@end  

@implementation ViewController  

- (void)viewDidLoad {  
    [super viewDidLoad];  


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

    /* 
     参数的意义: 
     1.item:约束中的两个视图对象 
     2.Attribute:描述视图的对齐特征 
     3.relatedBy:描述两个视图attribute关系 
     4.multiplier:缩放比例 
     5.constant:偏移量 

     视图1.属性  关系  视图2.属性 * 缩放比例 + 偏移量 

     视图1.左边 == 视图2.左边 * 1 +0; 
     [NSLayoutConstraint constraintWithItem:view1 attribute:左边 relatedBy:== toItem:view2 attribute:左边 multiplier:1 constant:0] 

     视图1.宽度 == 100 
     [NSLayoutConstraint constraintWithItem:view1 attribute:宽度 relatedBy:== toItem:nil attribute:宽度 multiplier:0 constant:100] 
     */  


    UIView *view1 = [UIView new];  
    //启动autoLayout布局  
    view1.translatesAutoresizingMaskIntoConstraints = NO;  
    view1.backgroundColor = [UIColor redColor];  
    [self.view addSubview:view1];  

    /* 
     NSLayoutAttributeLeft = 1,    对齐对象的左边 
     NSLayoutAttributeRight,        对齐对象的右边 
     NSLayoutAttributeTop,          距离顶部的距离 
     NSLayoutAttributeBottom,    距离底部的距离 
     NSLayoutAttributeLeading,   距离左边的距离    (物体对齐矩形的前沿) 
     NSLayoutAttributeTrailing,    距离右边部的距离 (物体对齐矩形的后缘) 
     NSLayoutAttributeWidth,      控件的宽度 
     NSLayoutAttributeHeight,     控件的高度 
     NSLayoutAttributeCenterX,  x 轴中线点的距离 
     NSLayoutAttributeCenterY,  y 轴中线点的距离 
     NSLayoutAttributeBaseline,//基线 
     NSLayoutAttributeLastBaseline = NSLayoutAttributeBaseline, 
     NSLayoutAttributeFirstBaseline NS_ENUM_AVAILABLE_IOS(8_0), 

     //下面的属性是设置的边距 意义和上面类似 对应左,右等边距 
     NSLayoutAttributeLeftMargin NS_ENUM_AVAILABLE_IOS(8_0), 
     NSLayoutAttributeRightMargin NS_ENUM_AVAILABLE_IOS(8_0), 
     NSLayoutAttributeTopMargin NS_ENUM_AVAILABLE_IOS(8_0), 
     NSLayoutAttributeBottomMargin NS_ENUM_AVAILABLE_IOS(8_0), 
     NSLayoutAttributeLeadingMargin NS_ENUM_AVAILABLE_IOS(8_0), 
     NSLayoutAttributeTrailingMargin NS_ENUM_AVAILABLE_IOS(8_0), 
     NSLayoutAttributeCenterXWithinMargins NS_ENUM_AVAILABLE_IOS(8_0), 
     NSLayoutAttributeCenterYWithinMargins NS_ENUM_AVAILABLE_IOS(8_0), 
     //无,后面会说应用场景 
     NSLayoutAttributeNotAnAttribute = 0 

     */  

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

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

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

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

    [self.view addConstraint:constraint1];  
    [self.view addConstraint:constraint2];  
    [self.view addConstraint:constraint3];  
    [self.view addConstraint:constraint4];  

    UIView *view2 = [[UIView alloc]init];  
    view2.translatesAutoresizingMaskIntoConstraints = NO;  
    view2.backgroundColor = [UIColor yellowColor];  
    [self.view addSubview:view2];  

    NSLayoutConstraint *constraint11 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeBottom multiplier:1 constant:0];  
    NSLayoutConstraint *constraint12 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:view1 attribute:NSLayoutAttributeRight multiplier:1 constant:0];  
    NSLayoutConstraint *constriant13 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeWidth multiplier:1 constant:100];  
    NSLayoutConstraint *constraint14 = [NSLayoutConstraint constraintWithItem:view2 attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1 constant:100];  
    [self.view addConstraint:constraint11];  
    [self.view addConstraint:constraint12];  
    [self.view addConstraint:constriant13];  
    [self.view addConstraint:constraint14];  



}  

- (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、付费专栏及课程。

余额充值