美文网首页
【iOS】AutoLayout基础篇

【iOS】AutoLayout基础篇

作者: cod_mm | 来源:发表于2015-11-04 22:32 被阅读0次

    AutoLayout是iOS6开始引入的一种布局技术,专门用来做UI界面布局的。用来解决Frame布局在多屏幕尺寸适配不足的问题。

    一个NSLayoutConstraint 对象就是一条约,约束的创建有2种方法。

     +(instancetype)constraintWithItem:(id)view1 
                             attribute:(NSLayoutAttribute)attr1                     
                             relatedBy:(NSLayoutRelation)relation
                                toItem:(nullable id)view2 
                             attribute:(NSLayoutAttribute)attr2 
                            multiplier:(CGFloat)multiplier 
                              constant:(CGFloat)c;
    

    函数的对照公式为: view1.attr1 <relation> view2.attr2 * multiplier + constant
    注意:如果约束不需要第4个参数(view2),将它设为nil,第五个参数(attr2)设为NSLayoutAttributeNotAnAttribute

    参数
    view1 要进行约束的view
    attr1 View1要约束的属性
    relation 相对于目标view(view2)的约束关系
    view2 view1约束的参照物
    attr2 view2作为参照的属性
    multiplier 指定一个与view2属性相乘的乘数multiplier
    c 指定一个与(view2属性 * multiplier 后)相加的浮点数constant
    // 红色View设置自身的宽高为100,相对于父组件居中
    UIView *redView = [[UIView alloc] init];
    [redView setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:redView];
    
    //使用Auto Layout约束,禁止将Autoresizing Mask转换为约束
    [redView setTranslatesAutoresizingMaskIntoConstraints:NO];
    NSLayoutConstraint *xConstraint = [NSLayoutConstraint constraintWithItem:redView
                                                                   attribute:NSLayoutAttributeCenterX
                                                                   relatedBy:NSLayoutRelationEqual
                                                                      toItem:self.view
                                                                   attribute:NSLayoutAttributeCenterX
                                                                  multiplier:1.0
                                                                    constant:0];
    
    NSLayoutConstraint *yConstraint = [NSLayoutConstraint constraintWithItem:redView
                                                                   attribute:NSLayoutAttributeCenterY
                                                                   relatedBy:NSLayoutRelationEqual
                                                                      toItem:self.view
                                                                   attribute:NSLayoutAttributeCenterY
                                                                  multiplier:1.0
                                                                    constant:0];
    
    NSLayoutConstraint *wConstraint = [NSLayoutConstraint constraintWithItem:redView
                                                                   attribute:NSLayoutAttributeWidth
                                                                   relatedBy:NSLayoutRelationGreaterThanOrEqual
                                                                      toItem:nil
                                                                   attribute:NSLayoutAttributeNotAnAttribute
                                                                  multiplier:1.0
                                                                    constant:100];
    
    NSLayoutConstraint *hConstraint = [NSLayoutConstraint constraintWithItem:redView
                                                                   attribute:NSLayoutAttributeHeight
                                                                   relatedBy:NSLayoutRelationGreaterThanOrEqual
                                                                      toItem:nil
                                                                   attribute:NSLayoutAttributeNotAnAttribute
                                                                  multiplier:1.0
                                                                    constant:100];
    
    NSArray *array = [NSArray arrayWithObjects:xConstraint, yConstraint, wConstraint, hConstraint, nil];
    [self.view addConstraints:array];
    
    效果图

    相关文章

      网友评论

          本文标题:【iOS】AutoLayout基础篇

          本文链接:https://www.haomeiwen.com/subject/qytchttx.html