我想提出一个模态视图控制器,它不会使其背后的内容变暗。只需使用标准的presentViewController。只是将视图控制器的子视图添加到父视图会导致问题。
答案 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;
}];
这是从内存中写的,因此可以原谅任何错误,也不是为了让它工作,你需要在它将覆盖的视图控制器中有一个“模态”视图控制器的实例。