1

我使用启用自动布局在 Xcode 4.5 中创建了一个应用程序。由于它与 iOS 5 不兼容(在测试之前不知道),我从情节提要中取消选中自动布局。现在在模拟器中测试时,视图的内容都是顺时针旋转的。

该应用程序最初是横向的(在 Xcode 中看起来不错)。模拟器将以横向启动,但视图内的所有内容在取消选中自动布局后看起来都已旋转。

例子:在此处输入图像描述

我尝试了一个新的视图控制器,它仍然像上面那样显示。初始方向已设置为横向。有什么解决办法吗?

4

2 回答 2

2

对于修复方向问题,请执行此操作。

在 .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 )

并将此方法写入您的 viewContrller.m

#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 (UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight);
}
#endif
于 2013-02-25T04:38:01.640 回答
0

还有一件事,当涉及 a 时,将andUINavigationController子类化。 UINavigationControlleroverriding supportedInterfaceOrientations

 #import "UINavigationController+Orientation.h"

 @implementation UINavigationController (Orientation)

-(NSUInteger)supportedInterfaceOrientations
{
   return [self.topViewController supportedInterfaceOrientations];
}

-(BOOL)shouldAutorotate
 {
    return YES;
 }

@end  

现在,iOS 容器(例如 UINavigationController)不会咨询它们的子容器来确定它们是否应该自动旋转。
如何子类
1. 添加一个新文件(cocoa touch 下的Objective c- category)
2. Category: Orientation Category On: UINavigationController
3. 将以上代码添加到UINavigationController+Orientation.m

于 2013-02-25T04:47:03.867 回答