原文链接
在 VC中加载Xib 自定义的myView 并修改 Frame,打印结果显示确实修改成功,但实际运行无变化 。
-(void)viewDidLoad {
[super viewDidLoad];
NSLog(@"之前==%@",NSStringFromCGRect(self.myView.frame));
CGRect rect = self.myView.frame;
tempFrame.size.height = 100;
self.myView.frame = rect;
NSLog(@"之后==%@",NSStringFromCGRect(self.myView.frame));
}
问题原因:
从nib中通过拖线连接的属性,在viewDidLoad中会根据初始的frame再计算一次frame。过程中虽然更改了frame,但是auto layout之后又恢复了之前的frame,所以模拟器显示没有变化。
因为auto layout是在viewDidLoad方法之后计算的,所以在viewDidLoad方法中打印出的值肯定改变了,可后面又被改变回原来的值。
有两种方式:
在viewDidLayoutSubviews方法中改变frame,这个方法通常是view显示之前最后执行的,所以这里更改没问题。
-
去掉VC中的auto layout,就可以在viewDidLoad方法中更改了
转载于:https://www.jianshu.com/p/4b4be3bdac1f