首页 > ViewDidLoad和ViewDidAppear两个方法中的self.view.frame不同?

ViewDidLoad和ViewDidAppear两个方法中的self.view.frame不同?

我做一个项目使用AutoLayout+SizeClasses布局,然后某些子视图在ViewDidLoad中生成,调整子视图的长宽等于父视图。
例如:给UIScrollView中添加多个UIImageView做图片浏览。想要做成里面的UIImageView高度等于UIScrollView的高度,在ViewDidLoad中设置UIImageView的frame。
但发现显示出来的不是我想要的效果,NSLog一下发现ViewDidLoad和ViewDidAppear两个方法中的UIScrollView的frame属性是不一样的????
怎么办。。。。


使用 AutoLayout+SizeClasses 的模式开发,在viewDidLoad 中视图的最终frame是没有确定的,你可以试试在ViewDidLoad分别调用 [self layoutIfNeeded] 和 [ScrollView layoutIfNeeded] 然后看看frame,如果是只是适配iPhone 竖屏,我建议你不要用 SizeClasses 具体看 博客


我最终处理scrollView的方法是直接用代码形式给里面的元素布局,AutoLayout布局搞scrollView还是比较复杂……


可以使用KVO监听你的UIScrollView的frame属性变化,然后查看具体是哪处代码修改了frame的值


setFrame 的方法一定要放在 viewDidAppear 里,在 viewDidLoad 里是没有效果的。因为 viewDidLoad 的时候, view 还没有加载完成。

【热门文章】
【热门文章】