如果我在这里错过了一些内容,我很抱歉,但我认为在IB中创建的UIView对象应该在viewDidLoad中创建它们的帧,这样您就可以在viewDidLoad或awakeFromNib或viewWillAppear中基于此视图进行初始设置。我在每种方法中记录了输出:
NSLog(@"%@ %s", NSStringFromCGRect(self.zoomView.frame), __FUNCTION__);
总而言之,我得到{0,0,0,0}。
这是我的UIStoryboard中的第一个nib,我正在使用Autolayout和iOS 6.我可以在以前的应用程序上发誓我使用了在IB中创建的其他UIView对象的框架进行设置。有什么东西改变了吗?或者我只是错误地记得它?谢谢!
答案 0 :(得分:4)
我有完全相同的问题。是的,你没记错 - 在iOS 5中它曾经是不同的。我总是在viewDidLoad:
中设置我的视图,框架已经是实际在屏幕上显示的方式了。
现在在iOS 6中,如果启用了auto layout,您需要将代码放入viewDidAppear:
以使用有效的框架。显然,布局是在这两个电话之间进行的。
答案 1 :(得分:0)
我认为它与你正在使用的设备有关,可能还有其他的东西,但框架和边界“有时”可能会被viewDidLoad调用时设置,有时不会(取决于......)另一方面保证在调用“ViewDidAppear”时设置手,帧和边界。并且您希望将与代码相关的代码放在保证的位置!