我想在轮换后获得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框架的正确方法是什么?
答案 0 :(得分:2)
有时你会在superview完成布局之前收到通知,基本上你可以使用通知设置一个标志,例如BOOL didRotate;
,然后在这个标志中使用
- (void)layoutSubviews
方法(在视图中覆盖此方法),此方法将在旋转后立即调用,超级视图已更改其框架。