美文网首页
ios约束随记

ios约束随记

作者: 小白猿 | 来源:发表于2018-01-30 09:41 被阅读9次

    代码实现的autolayout

    • translatesAutoresizingMaskIntoConstraints = false
      • 官方解释
    • By default, the autoresizing mask on a view gives rise to constraints that fully determine the view's position. This allows the auto layout system to track the frames of views whose layout is controlled manually (through -setFrame:, for example).
    • When you elect to position the view using auto layout by adding your own constraints, you must set this property to NO. IB will do this for you.
    • 翻译
    • the autoresizing mask 已经默认给视图添加了使其位置确定的约束。并且允许自动布局系统追踪通过手动设置约束的视图的frame(比如通过-setFrame:)
    • 当你需要通过自己添加约束来使用自动布局的时候,必须设置此属性为 NO,通过IB脱线来设置约束时,系统已经默认设置了此属性为NO

    原生autolayout 代码示例

    - (void)viewDidLoad {
           [super viewDidLoad];       
    //       1.创建第一个蓝色的view
           UIView *blueView = [[UIView alloc]init];
           blueView.backgroundColor = [UIColor blueColor];
           [self.view addSubview:blueView];
    //       2.创建第二个红色的view
           UIView *redView = [[UIView alloc]init];
           redView.backgroundColor = [UIColor redColor];
           [self.view addSubview:redView];
    //        3.设置红色和蓝色view的约束
    //           3.1去掉automasking
           self.view.translatesAutoresizingMaskIntoConstraints = NO;
           blueView.translatesAutoresizingMaskIntoConstraints = NO;
           redView.translatesAutoresizingMaskIntoConstraints = NO;
           
    //       constraintWithItem表示的控件的attribute属性relatedBy(等于)toItem(这个控件)attribute(某一个属性)multiplier(乘以某一个值)constant(加上一个间距)
            NSLayoutConstraint *blueConsgtraint1 = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:20];
            NSLayoutConstraint *blueConsgtraint2 = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];
            NSLayoutConstraint *blueConsgtraint3 = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeRight multiplier:1.0 constant:-20];
            NSLayoutConstraint *blueConsgtraint4 = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:0 constant:40];
           
    //       4.添加约束(blueView)
           [self.view addConstraint:blueConsgtraint1];
           [self.view addConstraint:blueConsgtraint2];
           [self.view addConstraint:blueConsgtraint3];
           [blueView addConstraint:blueConsgtraint4];
    //       5.给红色视图添加约束
           NSLayoutConstraint *redContraint1 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:20];
            NSLayoutConstraint *redContraint2 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
            NSLayoutConstraint *redContraint3 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeHeight multiplier:1.0 constant:0];
            NSLayoutConstraint *redContraint4 = [NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:blueView attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];   
    
       // 添加约束
        [self.view addConstraints:@[redContraint1,redContraint2,redContraint3,redContraint4]];
    }
    

    相关文章

      网友评论

          本文标题:ios约束随记

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