透明 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
如何创建一个透明的 ViewController? [复制]