iOS 当前视图控制器view.frame 在viewDidLoad 和 viewWillAppear 中值不一样问题
来源:互联网 发布:.com域名注册 编辑:程序博客网 时间:2024/06/05 20:09
今天在项目中遇到了一个奇怪的问题.我使用的测试机是iphone5s,在viewDidload中,当我打印 self.view.frame.size.height 显示是548 ,而不是我们预想的568,然后,我在viewwillappear中打印这个self.view.frame.size.height 结果就变成了568,这就导致了我在viewdidload中创建自定义控件的时候坐标需要参照这个20,这到底是怎么一回事。
经过研究发现,我这个页面使用storyboard 写的,而且父类是UICollectionViewController而不是UIViewController,这才是问题所在。
原来这个问题产生的原因是这样,在viewDidLoad中取得的值是xib或storyBoard中原始的view尺寸,与是否Autolayout或Size Class无关。所以正确的宽度需要在viewWillAppear中取得。但是,有一点值得注意的是 ,当我们使用[UIScreen mainScreen].bounds.size 的时候得到的却是当前屏幕的尺寸。所以,现在我们有两种解决办法:1,在viewwillAppear 中写我们的控件 2,修改我们的参照坐标为 [UIScreen mainScreen].bounds.size。我选择了第二种方法。
如果你有其他的理解或者觉得我理解有误,欢迎留言讨论。
0 0
- iOS 当前视图控制器view.frame 在viewDidLoad 和 viewWillAppear 中值不一样问题
- iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- iOS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- viewwillappear和viewdidload区别
- viewDidLoad 和 viewWillAppear: 方法
- 【iOS开发】获取当前view(视图)所在的Controller(控制器)
- ios的视图控制器的viewWillAppear和viewDidAppear什么时候被调用
- ios的视图控制器的viewWillAppear和viewDidAppear什么时候被调用
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- OS视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、view
- viewDidUnload,viewDidLoad,viewWillAppear和viewWillDisappear
- iOS--获取当前视图控制器
- Compare Version Numbers
- 全面掌握IO(输入/输出流)
- 复习排序-简单选择排序
- 图像处理之基于一维高斯快速模糊
- 摄像头拍照之压缩图片
- iOS 当前视图控制器view.frame 在viewDidLoad 和 viewWillAppear 中值不一样问题
- SLAM学习笔记1:历史与现状
- LA-3026 - Period-MP算法-失配函数-寻找循环节 (kmp)
- 将一个整数分解为一个或者多个素数的乘积
- 一种另类的思维——序列分割
- app后台运行
- Basic Calculator II
- java SE复习笔记9
- Hibernate主配置文件