透明 ViewController 可与 presentViewController 一起使用,但不能与 pushViewController 一起使用

Posted

技术标签:

【中文标题】透明 ViewController 可与 presentViewController 一起使用,但不能与 pushViewController 一起使用【英文标题】:Transparent ViewController work with presentViewController, but not pushViewController 【发布时间】:2016-08-15 22:30:58 【问题描述】:
let dialog: FriendCheckInDialogViewController = storyboard?.instantiateViewControllerWithIdentifier("FriendCheckInDialogViewController") as! FriendCheckInDialogViewController
dialog.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext

如果我使用

self.navigationController?.presentViewController(dialog, animated: false, completion: nil)

然后透明度起作用。但是popToRootViewControllerAnimated没有,所以我不能回去。

如果我使用

self.navigationController?.pushViewController(dialog, animated: false)

然后背景变成黑色而不是透明。但是popToRootViewControllerAnimated 有效,所以我可以回去。

我该怎么办?

【问题讨论】:

您想以模态方式展示您的视图控制器还是导航堆栈的一部分?如果你使用 presentViewController 那么它是模态的,你需要使用dismissViewController。如果使用导航控制器和堆栈,那么您可以在前一个视图控制器的顶部显示透明度 @Paulw11 酷,工作,谢谢。让它成为一个答案。刚接触 ios 开发,所以没觉得这个方法那么简单 【参考方案1】:

您似乎在混合不同的演示风格。

如果您使用presentViewController 以模态方式呈现视图控制器,则可以使用dismissViewController 将其关闭。在这种情况下,您可以在当前视图控制器上以模态方式呈现视图控制器。

如果您将视图控制器推送到导航控制器堆栈,则可以将该视图控制器弹出,但推送的视图控制器会替换当前视图控制器,因此您不能将其暴露在“下方”。

【讨论】:

以上是关于透明 ViewController 可与 presentViewController 一起使用,但不能与 pushViewController 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

iOS 透明 ViewController

具有透明背景和不透明前景的 iOS 模态 ViewController

IOS 弹出模态透明的ViewController

如何创建一个透明的 ViewController? [复制]

在具有透明背景的 Alert ViewController 中心添加图像

present一个半透明的ViewController的方法