【问题标题】:Rotate view below modal view在模态视图下方旋转视图
【发布时间】:2012-08-13 16:43:57
【问题描述】:

我有一个UIViewController(称为MainViewController),它以模态方式呈现半透明视图(HelpOverlayViewController):

HelpOverlayViewController *helpOverlayViewController = [[HelpOverlayViewController alloc] init];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
helpOverlayViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:helpOverlayViewController animated:YES completion:nil];

如果用户在显示HelpOverlayViewController 时旋转设备,则它只会旋转HelpOverlayViewController 而不会旋转MainViewController,即父控制器。这是一个问题,因为HelpOverlayViewController 是半透明的,而MainViewController 在其下方可见。

两个控制器都有方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

它们都可以独立旋转。

当模态视图旋转时,有什么方法可以强制底层视图控制器旋转?

【问题讨论】:

    标签: ios cocoa-touch ipad uiview uiviewcontroller


    【解决方案1】:

    我知道这样的问题可能会在 iOS 6 中得到很大程度上解决,因为它有一个不同的模型来处理旋转。

    但是,现在这对您没有帮助。您最好将 HelpOverlay 设置为 UIView 而不是 UIViewController。您可以将此半透明视图添加到 MainViewController(或任何其他)的顶部。将此子视图添加到视图层次结构时,您仍然可以创建动画(如淡入)。使用此模型,您将不再有任何旋转问题。

    【讨论】:

    • 感谢您的回复。我知道我可以将叠加层添加为 UIView,但我不愿意这样做,因为我的 HelpOverlayController 包含相当多的逻辑。但是如果我找不到其他解决方案,我会记住这个建议作为备份。
    • 我最终将叠加层添加为子视图。
    • @NobleK,您可能仍然可以使用 ViewController,分配/初始化它,但不要执行 presentModal ...只需添加 ViewController.view 作为您的子视图
    • 是的,这就是我所做的 :) 但是,它并不完美。我还有一个额外的视图,它也是MainViewController 的子视图。此视图在添加帮助叠加层后从侧面滑入,这意味着它在HelpOverlayViewController.view 的顶部滑动。我尝试将帮助视图发送到前面,但没有运气。用presentModal添加帮助叠加层自然没有这个问题。
    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多