如果当前控制器的view没有特别的设置,一般情况下self.view.frame.size.width与[UIScreen mainScreen].bounds获得的数值是一样的。
下图是iOS15的11pro模拟器跑出来的数据,
第一个log的值是self.view.frame.size.width
第二个[UIScreen mainScreen].bounds
第三个是xib中一个距离左右屏幕都是16pt的一个label
可以看到[UIScreen mainScreen].bounds一直都是正确的数值,self.view.frame.size.width 在viewWillAppear方法中也读正确了,但是label的宽度一直到第二次调用viewWillLayoutSubviews的时候才正确。
所以如果要写布局的方法,需要用到label等控件的,在viewWillLayoutSubviews的方法中会好点。如果是基于[UIScreen mainScreen].bounds来计算的,在哪个方法中都是可以的。
网友评论