我使用启用自动布局在 Xcode 4.5 中创建了一个应用程序。由于它与 iOS 5 不兼容(在测试之前不知道),我从情节提要中取消选中自动布局。现在在模拟器中测试时,视图的内容都是顺时针旋转的。
该应用程序最初是横向的(在 Xcode 中看起来不错)。模拟器将以横向启动,但视图内的所有内容在取消选中自动布局后看起来都已旋转。
例子:
我尝试了一个新的视图控制器,它仍然像上面那样显示。初始方向已设置为横向。有什么解决办法吗?
我使用启用自动布局在 Xcode 4.5 中创建了一个应用程序。由于它与 iOS 5 不兼容(在测试之前不知道),我从情节提要中取消选中自动布局。现在在模拟器中测试时,视图的内容都是顺时针旋转的。
该应用程序最初是横向的(在 Xcode 中看起来不错)。模拟器将以横向启动,但视图内的所有内容在取消选中自动布局后看起来都已旋转。
例子:
我尝试了一个新的视图控制器,它仍然像上面那样显示。初始方向已设置为横向。有什么解决办法吗?
对于修复方向问题,请执行此操作。
在 .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
还有一件事,当涉及 a 时,将andUINavigationController
子类化。 UINavigationController
overriding 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