我使用自动布局启用了Xcode 4.5中的应用程序。由于它与iOS 5不兼容(测试前不知道),我从故事板中取消选中autolayout。现在,在模拟器中测试时,视图的内容都顺时针旋转。
该应用程序最初处于横向状态(在Xcode中看起来很好)。模拟器将以横向方式启动,但视图中的所有内容看起来都是在取消选中autolayout后旋转的。
示例:
我尝试使用新的视图控制器,它仍然显示如上。初始方向已设置为横向。任何解决方案?
答案 0 :(得分: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
答案 1 :(得分:0)
当涉及UINavigationController
时,还有一件事,即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-类别)
2. Category
:方向Category On
:UINavigationController
3.将上述代码添加到UINavigationController+Orientation.m