0

我有一个 UIView 的子类,它有一个名为 originalFrame 的属性。

我希望这个类在它从它所在的情节提要加载后存储它的原始帧值。

我已经覆盖了 awakeFromNib 方法:

-(void)awakeFromNib
{
    self.originalFrame = self.frame;
}

如果它所在的视图控制器的视图没有立即调整大小以适应屏幕大小,则此方法有效。

但是,我的故事板中的视图控制器都是针对 iPhone 4 英寸屏幕的,所以当应用程序在 iPhone 3.5 英寸屏幕上运行时,在调整视图控制器的视图大小以适应 3.5 英寸屏幕之前调用 awakeFromNib。如果我的子视图没有锚定到顶部,则 originalFrame 属性在调整大小后不会反映其框架。

在调整视图控制器的视图大小后,我能够覆盖 layoutSubviews 以获取 frame 属性,但是此方法在其他时候也被调用,我无法知道它是用于初始调整大小以适应屏幕还是其他。

有什么方法可以做到这一点,而不必在视图控制器的 viewDidLoad 方法中逐个手动设置此属性?

4

1 回答 1

0

如果您在 awakeFormNib 中将其设置为,则可以检查该值是否已设置CGRectZero并检查layoutSubviews是否为CGRectZero. 仅layoutSubviews当它是时才设置框架CGRectSubviews

于 2013-07-30T09:35:34.137 回答