美文网首页
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