使用自动布局和大小报告的框架不正确 类
Incorrect frame being reported using Autolayout & Size Classes
我已经在我的 UIViewController 中布置了一个 UIView。限制了它的高度和宽度,并通过限制将其垂直和水平居中,但是当我记录它的框架时,它报告的位置似乎适合整个 sizeClass,但不是我正在查看的屏幕尺寸。
例如,默认大小 class UIViewController 的宽度为 600px,在该大小下,我的 UIView 距左边缘 150px。当我在 iphone5 模拟器中 运行 检查与左边缘的距离时,它仍然报告 150px。
所有这一切的奇怪之处在于 UIView 本身仍然出现在预期的(针对屏幕尺寸调整)位置。
对于后代:我遇到的问题 -- 在打印视图框架时得到不正确的值 -- 是由于在 ViewDidLoad
期间访问该框架造成的。在 ViewController 生命周期的这一点上,所有视图可能尚未布局。
因此,只有在 ViewDidLayoutSubviews
被调用后访问 UIView
property/outlet 才是最安全的。
我的意思是,它就在方法的名称中:"Your views have been laid out... now do stuff with them."
我已经在我的 UIViewController 中布置了一个 UIView。限制了它的高度和宽度,并通过限制将其垂直和水平居中,但是当我记录它的框架时,它报告的位置似乎适合整个 sizeClass,但不是我正在查看的屏幕尺寸。
例如,默认大小 class UIViewController 的宽度为 600px,在该大小下,我的 UIView 距左边缘 150px。当我在 iphone5 模拟器中 运行 检查与左边缘的距离时,它仍然报告 150px。
所有这一切的奇怪之处在于 UIView 本身仍然出现在预期的(针对屏幕尺寸调整)位置。
对于后代:我遇到的问题 -- 在打印视图框架时得到不正确的值 -- 是由于在 ViewDidLoad
期间访问该框架造成的。在 ViewController 生命周期的这一点上,所有视图可能尚未布局。
因此,只有在 ViewDidLayoutSubviews
被调用后访问 UIView
property/outlet 才是最安全的。
我的意思是,它就在方法的名称中:"Your views have been laid out... now do stuff with them."