将非活动约束添加到现有UIView

时间:2016-07-04 12:40:41

标签: ios objective-c uiview nslayoutconstraint

我有UIView我在IB中设置了约束。现在在代码中,我想做一些动画,通过添加一些新的约束和停用旧的。首先,我添加新的约束来查看,这是非活动的,如下所示:

// camera view new constraints
    self.cameraNewLeftConstraint = [NSLayoutConstraint constraintWithItem:self.cameraView
                                                                attribute:NSLayoutAttributeLeading
                                                                relatedBy:NSLayoutRelationEqual
                                                                   toItem:self.smallImageContainerView
                                                                attribute:NSLayoutAttributeLeading
                                                               multiplier:1.0
                                                                 constant:0];
    self.cameraNewLeftConstraint.active = NO;
    [self.presentationView addConstraint:self.cameraNewLeftConstraint];

但是这会在运行时生成约束警告(stnadard消息 - 将尝试破坏某些约束),我有相互冲突的约束,尽管我添加了非活动约束。我怎么能处理这个问题,这应该怎么做呢?

1 个答案:

答案 0 :(得分:1)

视图没有非活动约束。如果向视图添加约束,则该约束将处于活动状态。

active属性设置为YES的新方法会将约束添加到适当的视图中。在您的代码中,当您致电addConstraint时,iOS会将您的约束添加到您的视图中,并将active更改为YES

因此,请勿在视图上调用addConstraint。只需创建约束,并在需要使用时将active属性设置为YES

相关问题