我有一个导航基础应用程序,最近从Xcode 3.2移到了4.6。
由于在iOS 6中不推荐使用ShouldAutorotateToInterfaceOrientation,我只使用它来强制特定视图到UIDeviceOrientationLandscapeLeft,而其他视图只用于UIDeviceOrientationPortrait,所以我将同伴代码添加到相应的ViewController:
-(BOOL)shouldAutorotate{
NSLog(@"shouldAutorotate");
return YES;
}
-(NSInteger)supportedInterfaceOrientations{
NSLog(@"UIInterfaceOrientationMaskPortrait");
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate{
NSLog(@"shouldAutorotate");
return YES;
}
-(NSInteger)supportedInterfaceOrientations{
NSLog(@"UIInterfaceOrientationMaskLandscapeLeft");
return UIInterfaceOrientationMaskLandscapeLeft;
}
然后ViewController只将日志“UIInterfaceOrientationMaskPortrait”推入导航,当设备旋转时视图会旋转。 (这不是我想要的) 由[self presentModalViewController:]显示的ViewController可以记录“shouldAutorotate”和“UIInterfaceOrientationMaskLandscapeLeft”,并且在设备旋转时不会旋转。(这就是我想要的)
如何使导入导航的视图正常工作?
答案 0 :(得分:1)
如果您在应用程序中使用UINavigationcontroller
并且需要具有不同的界面方向,那么它可能会破坏应用程序中的界面方向,解决方案是实现自定义UINavigationController
并实现界面该自定义UINavigationController
类中的方向方法,这将使您的viewControllers根据您设置的方向旋转,因为您的控制器是从UINavigationController
推送的。
用于在UINavigationController
上推送viewController,你应该这样做
[self.navigationController pushViewController:yourViewController animated:YES];
使用navigationController时我遇到了类似的问题,我的视图无法正常旋转所以我实现了这样的自定义navigationController
<强> CustomNavigationController.h 强>
@interface CustomNavigationController : UINavigationController
@end
<强> CustomNavigationController.m 强>
@implementation CustomNavigationController
//overriding shouldRotate method for working in navController
-(BOOL)shouldAutorotate
{
return [self.visibleViewController shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
答案 1 :(得分:0)
将以下代码放入appDelegate方法:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationMaskPortrait;
}
希望这会对你有所帮助。
一切顺利!!!