旋转后如何获得superview的框架?

时间:2014-03-03 14:46:21

标签: ios uiview rotation

我想在轮换后获得superview的框架。在我的自定义视图中,我会收听UIDeviceOrientationDidChangeNotification

[[NSNotificationCenter defaultCenter] addObserver:self
                  selector:@selector(orientationDidChange:)
                      name:UIDeviceOrientationDidChangeNotification
                    object:nil];

然后:

- (void)orientationDidChange:(NSNotification *)notification {
    NSLog(@"superview: %@", [NSValue valueWithCGRect:self.superview.frame]);
}

但它是旋转前的帧。 superview的框架尚未旋转。如果我在延迟一段时间后获得superview的框架,那是正确的。

旋转后获取superview框架的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

有时你会在superview完成布局之前收到通知,基本上你可以使用通知设置一个标志,例如BOOL didRotate;,然后在这个标志中使用  - (void)layoutSubviews方法(在视图中覆盖此方法),此方法将在旋转后立即调用,超级视图已更改其框架。