【问题标题】:Auto Layout Orientation does not working自动布局方向不起作用
【发布时间】:2014-07-07 11:57:00
【问题描述】:

我遇到了自动布局方向的问题。只是我正在推动视图控制器使用这行代码从 rootVC 控制

    fooBar *foo = [[fooBar alloc]initWithNibName:@"fooBar" bundle:nil];
    [self.navigationController pushViewController:foo animated:NO];

我的 fooBar 视图控制器具有自动布局,因此当我转动手机时我应该能够获得横向,但手机仍处于纵向模式。

另外奇怪的部分是我调试和下面的方法不起作用..(我把它们放到 fooBar VC)

(BOOL) shouldAutorotate{
return YES;
}
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
//returns true if want to allow orientation change
return TRUE;
}

构建选项 Ios SDK 6.0、Xcode 5.1

【问题讨论】:

    标签: ios rotation orientation autolayout portrait


    【解决方案1】:

    这可能是因为导航控制器没有转发这些方法调用。如果您愿意,您需要创建自己的自定义导航控制器并遵循以下模式:

    - (BOOL)shouldAutorotate
    {
        return [self.visibleViewController shouldAutorotate];
    }
    
    - (NSUInteger)supportedInterfaceOrientations
    {
       return [self.visibleViewController supportedInterfaceOrientations];
    }
    

    所以总而言之,创建自己的 UINavigationController 的具体实现,然后将上述两个方法转发到当前可见的任何视图控制器。然后,您应该注意到在您的 fooBar 类中调用了这些方法。

    【讨论】:

    • 我已经尝试了你在新项目中所说的方法,方法是从导航控制器推送 FooVC,然后成功了。似乎导航控制器处理方向的东西。但遗憾的是,它在我的主要项目中不起作用。我的项目较旧(它是 iOS 5),我们正在尝试迁移到自动布局,所以也许这就是为什么..
    【解决方案2】:

    请在项目设置中检查您是否检查了这些方向。

    【讨论】:

    • 是的,我没有错过 plist 和常规选项中的设备方向选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多