我有一个应用程序必须同时在纵向和横向上工作,并且 UITabBar 应该调整到当前方向(它具有自定义背景和选定项目)。所以,对于其余的视图,我只是重写了该- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
方法,它可以完美地工作。
我该怎么.moreNavigationController
做UITabBarController
?我尝试添加一个观察者(选择器是 UITabBarController 的扩展):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:self.moreNavigationController];
但它永远不会被调用。我是否遗漏了什么或者处理这种情况的最佳方法是什么?
解决方案:为什么UIDeviceOrientation
没有正确发射,所以更好用statusBarOrientation
,作为一种魅力。
工作的最终代码是这样的:在 mainUITabBarController
中viewDidLoad
:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIApplicationDidChangeStatusBarOrientationNotification
object:nil];
选择didRotate
器方法:
- (void) didRotate:(NSNotification *)notification{
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(UIInterfaceOrientationIsPortrait(orientation)) {
// Portrait
} else {
// Landscape
}
}
感谢帮助。