是否可以在iPad上呈现模态视图控制器而不会使背景变暗?

时间:2013-06-05 15:21:01

标签: ios ipad cocoa-touch

我想提出一个模态视图控制器,它不会使其背后的内容变暗。只需使用标准的presentViewController。只是将视图控制器的子视图添加到父视图会导致问题。

3 个答案:

答案 0 :(得分:1)

试试这个:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    // remove the dimming view if needed, when this view controller will appear as modal
    id <UIViewControllerTransitionCoordinator> transitionCoordinator = self.transitionCoordinator;
    if (transitionCoordinator.presentationStyle != UIModalPresentationNone) {
        for (UIView *transitionContainerSubview in transitionCoordinator.containerView.subviews) {
            if ([NSStringFromClass([transitionContainerSubview class]) isEqualToString:@"UIDimmingView"]) {
                transitionContainerSubview.hidden = YES;
            }
        }
    }
}

答案 1 :(得分:0)

或许可以看一下UIModalPresentationStyle

typedef NS_ENUM(NSInteger, UIModalPresentationStyle) {
UIModalPresentationFullScreen = 0,
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2
UIModalPresentationPageSheet,
UIModalPresentationFormSheet,
UIModalPresentationCurrentContext,
#endif
};

您可以在调用setModalPresentationStyle:之前在视图控制器上使用presentViewController:animated:completion:指定模式演示文稿的类型。

答案 2 :(得分:0)

最好的办法是将视图添加为子视图而不是模态viewController。我不知道你的特殊用途,但从它的声音来看,逻辑应该在同一个控制器中。

myControllerThatWasModal.view.layer.opacity = 0.0f;
myControllerThatWasModal.view.hidden = YES;
[self.view addSubview:myControllerThatWasModal.view];
[UIView animateWithDuration:1.0 animations:^{
     myControllerThatWasModal.view.layer.opacity = 1.0f;   
}];

这是从内存中写的,因此可以原谅任何错误,也不是为了让它工作,你需要在它将覆盖的视图控制器中有一个“模态”视图控制器的实例。