iOS8 Modal ViewController轮换问题

时间:2014-10-01 13:35:59

标签: ios objective-c rotation ios8

嗨我在iOS8中旋转Modal呈现的ViewController时遇到问题。所有这些在iOS7及更低版本上都能正常工作。

App Struct:

  • RootController(支持的方向:肖像)
  • 模态呈现的ViewController(支持的Orientation:All)

我的问题是当我提供模态控制器时旋转设备时,模态控制器的视图没有调整到景观框架。

看起来像这样:

enter image description here 调用了旋转方法,当我手动将视图框架设置为横向时,右侧(屏幕灰色边)的用户交互不起作用。

RootController代码:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationPortrait;
}

- (NSUInteger) supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

模态控制器代码:

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskAll;
}


- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                                         duration:(NSTimeInterval)duration
{
    if (self.presentingViewController != nil) {
        [self.presentingViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation
                                                                        duration:duration];
    }
}

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                                duration:(NSTimeInterval)duration
{
    if (self.presentingViewController != nil) {
        [self.presentingViewController willRotateToInterfaceOrientation:toInterfaceOrientation
                                                               duration:duration];
    }
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    if (self.presentingViewController != nil) {
        [self.presentingViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    }
}

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {

    } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {

    }];
}

任何人都可以帮我解决iOS8的这个问题。

1 个答案:

答案 0 :(得分:1)

你是如何呈现模态视图控制器的?你为什么要自己转发轮换方法?如果操作正确,应该自动处理,您需要的只是-supportedInterfaceOrientations方法(并且正如Jasper所说,autoresizingMask或Auto Layout约束需要正确)。