iOS:在启用自动布局的情况下以代码设置视图大小

iOS:在启用自动布局的情况下以代码设置视图大小,ios,objective-c,uiview,autolayout,Ios,Objective C,Uiview,Autolayout,我在选项卡栏导航中有两个视图控制器。在第二个场景中,我有一个额外的视图(只是一个简单的UIView)和一个按钮来设置它的颜色和边界 CGRect viewRect = CGRectMake(20, 20, 70, 70); self.animationView.bounds = viewRect; self.animationView.backgroundColor = [UIColor yellowColor]; 这段代码运行良好。但是,如果我导航到第一个视图控制器,然后返回到第二个视图控

我在选项卡栏导航中有两个视图控制器。在第二个场景中,我有一个额外的视图(只是一个简单的UIView)和一个按钮来设置它的颜色和边界

CGRect viewRect = CGRectMake(20, 20, 70, 70);
self.animationView.bounds = viewRect;

self.animationView.backgroundColor =
[UIColor yellowColor];
这段代码运行良好。但是,如果我导航到第一个视图控制器,然后返回到第二个视图控制器,我的视图仍然是黄色的,但它回到了我在interface builder中设置的大小和位置

我怎样才能防止这种情况?
如果禁用自动布局,则此行为将结束,但我确实不想这样做。

为animationView约束创建出口,并更改其常量值

在viewcontroller的.h文件中: 将插座连接到IB中的正确约束:

    //AnimationView Height Constraint 
    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *cHeight;
    //AnimationView Width Constraint 
    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *cWidth;
    //AnimationView Leading Constraint 
    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *cLeading;
    //AnimationView Top Constraint 
    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *cTop;
在ViewController的.m文件中,设置约束的常量值,而不是帧:

    - (IBAction)btnTouched:(id)sender {
        [_cHeight setConstant:70];
        [_cWidth setConstant:70];
        [_cTop setConstant:20];
        [_cLeading setConstant:20];

        self.animationView.backgroundColor = [UIColor yellowColor];
    }
它会很好用的