我有一个 UIView 的子类,它有一个名为 originalFrame 的属性。
我希望这个类在它从它所在的情节提要加载后存储它的原始帧值。
我已经覆盖了 awakeFromNib 方法:
-(void)awakeFromNib
{
self.originalFrame = self.frame;
}
如果它所在的视图控制器的视图没有立即调整大小以适应屏幕大小,则此方法有效。
但是,我的故事板中的视图控制器都是针对 iPhone 4 英寸屏幕的,所以当应用程序在 iPhone 3.5 英寸屏幕上运行时,在调整视图控制器的视图大小以适应 3.5 英寸屏幕之前调用 awakeFromNib。如果我的子视图没有锚定到顶部,则 originalFrame 属性在调整大小后不会反映其框架。
在调整视图控制器的视图大小后,我能够覆盖 layoutSubviews 以获取 frame 属性,但是此方法在其他时候也被调用,我无法知道它是用于初始调整大小以适应屏幕还是其他。
有什么方法可以做到这一点,而不必在视图控制器的 viewDidLoad 方法中逐个手动设置此属性?