Xcode Autolayout - 未选中时旋转视图

时间:2013-02-25 04:32:10

标签: ios objective-c xcode autolayout

我使用自动布局启用了Xcode 4.5中的应用程序。由于它与iOS 5不兼容(测试前不知道),我从故事板中取消选中autolayout。现在,在模拟器中测试时,视图的内容都顺时针旋转。

该应用程序最初处于横向状态(在Xcode中看起来很好)。模拟器将以横向方式启动,但视图中的所有内容看起来都是在取消选中autolayout后旋转的。

示例:enter image description here

我尝试使用新的视图控制器,它仍然显示如上。初始方向已设置为横向。任何解决方案?

2 个答案:

答案 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时,还有一件事,即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-类别)
2. Category:方向Category On:UINavigationController
3.将上述代码添加到UINavigationController+Orientation.m