我在标签栏导航中有两个视图控制器。在第二个场景中,我有一个额外的视图(只是一个简单的UIView)和一个设置它的颜色和边界的按钮。
CGRect viewRect = CGRectMake(20, 20, 70, 70);
self.animationView.bounds = viewRect;
self.animationView.backgroundColor =
[UIColor yellowColor];
此代码工作正常。但是,如果我导航到第一个视图控制器然后返回到第二个视图控制器,我的视图仍然是黄色,但它返回到我在界面构建器中设置的大小和位置。
我该怎样防止这种情况? 如果我禁用自动布局,则此行为结束,但我并不是真的想这样做。
答案 0 :(得分:1)
为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];
}
它会正常工作。