ios - ViewDidLoad和ViewDidAppear两个方法中的self.view.frame不同?
怪我咯
怪我咯 2017-04-17 15:34:44
[iOS讨论组]

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(4)
巴扎黑

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

黄舟

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

PHPz

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

PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号