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  

你可能感兴趣的:(ios,布局)