更改 Xib 中控件Frame

原文链接
在 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方法中打印出的值肯定改变了,可后面又被改变回原来的值。

有两种方式:

  1. 在viewDidLayoutSubviews方法中改变frame,这个方法通常是view显示之前最后执行的,所以这里更改没问题。

  2. 去掉VC中的auto layout,就可以在viewDidLoad方法中更改了


    1760730-260cf2b0e4ebd9cb.png

转载于:https://www.jianshu.com/p/4b4be3bdac1f

猜你喜欢

转载自blog.csdn.net/weixin_34168700/article/details/91091328