代码实现Autolayout

代码实现Autolayout的步骤

  • 利用NSLayoutConstraint类创建具体的约束对象

  • 添加约束对象到相应的view上

- (void)addConstraint:(NSLayoutConstraint *)constraint;

- (void)addConstraints:(NSArray *)constraints;

代码实现Autolayout的注意点

  • 要先禁止autoresizing功能,设置view的下面属性为NO
view.translatesAutoresizingMaskIntoConstraints = NO;
  • 添加约束之前,一定要保证相关控件都已经在各自的父控件上 不用再给view设置frame

NSLayoutConstraint

  • 一个NSLayoutConstraint对象就代表一个约束

  • 创建约束对象的常用方法

+(id)constraintWithItem:(id)view1

attribute:(NSLayoutAttribute)attr1

relatedBy:(NSLayoutRelation)relation toItem:(id)view2

attribute:(NSLayoutAttribute)attr2

multiplier:(CGFloat)multiplier

constant:(CGFloat)c;
  • view1 :要约束的控件
  • attr1 :约束的类型(做怎样的约束)
  • relation :与参照控件之间的关系
  • view2 :参照的控件
  • attr2 :约束的类型(做怎样的约束)
  • multiplier :乘数
  • c :常量

添加约束的规则

  • 在创建约束之后,需要将其添加到作用的view上

  • 一定要在拥有父控件之后再添加约束

  • 在添加时要注意目标view需要遵循以下规则:

    • 1)对于两个同层级view之间的约束关系,添加到它们的父view上

    • 2)对于两个不同层级view之间的约束关系,添加到他们最近的共同父view上

    • 3)对于有层次关系的两个view之间的约束关系,添加到层次较高的父view上

UIView *blueView = [[UIView alloc] init];
    blueView.backgroundColor = [UIColor blueColor];
    blueView.translatesAutoresizingMaskIntoConstraints = NO;
    [self.view addSubview:blueView];
    // 设置高度
    NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:100];
    [blueView addConstraint:heightConstraint];

    // 设置左边间距
    NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:blueView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20];
    [self.view addConstraint:leftConstraint];

results matching ""

    No results matching ""