博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 之系统的autoLayou自动t布局
阅读量:4290 次
发布时间:2019-05-27

本文共 3185 字,大约阅读时间需要 10 分钟。

在storyBoard中自动布局时,要注意内容吸附优先级的问题,数值越大,优先级越高,就越能保持住本身的样子;

约束添加的原则:约束添加到父view上,如果没有父view,可以添加到共同的父别上(也就是爷爷辈,依次网上推),如果是宽度,高度可以添加到自己身上。

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

    [superviewDidLoad];

    UIView  *blueView = [[UIViewalloc]init];

    blueView.backgroundColor = [UIColorblueColor];

    

    [self.viewaddSubview:blueView];

    

#warning  一定要把view  autoresizing属性给禁用掉

    blueView.translatesAutoresizingMaskIntoConstraints =NO;

    

    

    // 创建redView

    UIView  *redView = [[UIViewalloc]init];

    redView.backgroundColor = [UIColorredColor];

    

    [self.viewaddSubview:redView];

    

    redView.translatesAutoresizingMaskIntoConstraints =NO;

    

    

    // 添加blueView顶部的约束

    /**

     withItem 被约束的view

     attribute :被约束view的属性

     

     relatedBy

     NSLayoutRelationLessThanOrEqual = -1,

     NSLayoutRelationEqual = 0,

     NSLayoutRelationGreaterThanOrEqual

     

     toItem 参照的view

     attribute 参照view属性

     */

    NSLayoutConstraint *blueTop = [NSLayoutConstraintconstraintWithItem:blueView

                                                               attribute:NSLayoutAttributeTop

                                                               relatedBy:NSLayoutRelationEqual

                                                                  toItem:self.view

                                                               attribute:NSLayoutAttributeTop

                                                              multiplier:1

                                                                constant:20];

    

    // 把约束添加到 控制的view

    [self.view addConstraint:blueTop];

    

    

    // 添加blueView 的左侧约束

    NSLayoutConstraint *blueLeft = [NSLayoutConstraintconstraintWithItem:blueView

                                                                attribute:NSLayoutAttributeLeft

                                                                relatedBy:NSLayoutRelationEqual

                                                                   toItem:self.view

                                                                attribute:NSLayoutAttributeLeft

                                                               multiplier:1

                                                                 constant:20];

    

    // 把左侧的约束添加到控制器的view

    [self.view addConstraint:blueLeft];

    

    

    // blueView 右侧的约束

    NSLayoutConstraint *blueRight = [NSLayoutConstraintconstraintWithItem:blueView

                                                                 attribute:NSLayoutAttributeRight

                                                                 relatedBy:NSLayoutRelationEqual

                                                                    toItem:self.view

                                                                 attribute:NSLayoutAttributeRight

                                                                multiplier:1

                                                                  constant:-20];

    

    [self.view addConstraint:blueRight];

    

    // 添加blueView高度

    

    NSLayoutConstraint *blueHeight = [NSLayoutConstraintconstraintWithItem:blueView

                                                                  attribute:NSLayoutAttributeHeight

                                                                  relatedBy:NSLayoutRelationEqual

                                                                     toItem:nil  // 没有参照view就传nil

                                                                  attribute:NSLayoutAttributeNotAnAttribute//属性

                                                                 multiplier:1

                                                                   constant:40];

    

//    [self.view addConstraint:blueHeight];

    [blueView addConstraint:blueHeight];

    

    

    // 设置 redView 顶部的约束

    NSLayoutConstraint *redTop = [NSLayoutConstraintconstraintWithItem:redView

                                                                 attribute:NSLayoutAttributeTop

                                                                 relatedBy:NSLayoutRelationEqual

                                                                    toItem:blueView

                                                                 attribute:NSLayoutAttributeBottom

                                                                multiplier:1

                                                                  constant:20];

    

    [self.view addConstraint:redTop];

    

    

    // 设置 redView 右侧的约束

    NSLayoutConstraint *redRight = [NSLayoutConstraintconstraintWithItem:redView

                                                                attribute:NSLayoutAttributeTrailing

                                                                relatedBy:NSLayoutRelationEqual

                                                                   toItem:blueView

                                                                attribute:NSLayoutAttributeTrailing

                                                               multiplier:1

                                                                 constant:0];

    

    [self.view addConstraint:redRight];

    

    

    // 设置 redView 高度的约束

    NSLayoutConstraint *redHeight = [NSLayoutConstraintconstraintWithItem:redView

                                                                 attribute:NSLayoutAttributeHeight

                                                                 relatedBy:NSLayoutRelationEqual

                                                                    toItem:blueView

                                                                 attribute:NSLayoutAttributeHeight

                                                                multiplier:1

                                                                  constant:0];

    

    [self.view addConstraint:redHeight];

    

    

    // redView 宽度约束

    NSLayoutConstraint *redWidth = [NSLayoutConstraintconstraintWithItem:redView

                                                                attribute:NSLayoutAttributeWidth

                                                                relatedBy:NSLayoutRelationEqual

                                                                   toItem:blueView

                                                                attribute:NSLayoutAttributeWidth

                                                               multiplier:0.5

                                                                 constant:0];

    

    // 如果有参照就不要把约束添加到自己身上

    [self.view addConstraint:redWidth];

    

}

@end

转载地址:http://khlgi.baihongyu.com/

你可能感兴趣的文章
javascript *** is not a function
查看>>
老韩思考:卖点----卖豆腐的能转行IT
查看>>
Android_属性动画
查看>>
网络下载-xUtils,HttpUtils
查看>>
网络下载-AsyncHttpClient
查看>>
myUtils-多线程下载
查看>>
网络下载-断点续传原理
查看>>
线程-消息回环处理机制
查看>>
感谢伤害我的人
查看>>
请不要做浮躁的人----(学习编程的忠告)
查看>>
网络_volley_使用方法和代码
查看>>
网络_AsyncHttpClient_使用方法和代码
查看>>
网络_断点续传.断点下载
查看>>
网络_Xutils
查看>>
网络_多线程下载
查看>>
网络_httpClient
查看>>
网络_HttpURLConnection_原始类
查看>>
网络_OKHttp
查看>>
android_事件分发机制_几行代码直接通晓
查看>>
图片_OOM_OutOfMemory
查看>>