我遇到有关iPhone屏幕方向的问题。我的应用程序的基本SDK是ios 6.0,部署目标是4.3,并在ios 5.0和5.1上运行
在应用程序的plist文件中,我设置了Portrait (bottom home button)
,Landscape (left home button)
和Landscape (right home button)
。我正在开发通用应用程序。因此,在每个视图的- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
方法中,我有条件地返回iphone的portrait
和ipad的landscape
。
我的导航流程是:UINavigatinController
按下UITableViewControler
的第一个选项卡使UINavigationController
在rootViewController
上逐个浏览2个视图。
在上一个viewController的- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
方法中,我返回了YES
。但是应用程序这种视图根本不会旋转。甚至没有调用- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
方法。 :(
我的要求是仅对一个viewController而不对整个应用程序同时支持横向和纵向方向。
请帮我。
最佳答案
您可以通过View Controller Class中的此代码解决此定向问题。
#ifdef IOS_OLDER_THAN_6
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
#endif
#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight); //IOS_5
}
#endif
您必须在.pch文件中定义此代码。
代码:
#define IOS_OLDER_THAN_6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0)
#define IOS_NEWER_OR_EQUAL_TO_6 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0)
希望它有效。
谢谢。