我遇到有关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的第一个选项卡使UINavigationControllerrootViewController上逐个浏览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)


希望它有效。

谢谢。

09-25 15:06