视图控制器透明背景

Posted

技术标签:

【中文标题】视图控制器透明背景【英文标题】:View Controller Transparent Background 【发布时间】:2015-10-08 14:49:19 【问题描述】:

如何创建一个具有透明背景的视图控制器,它覆盖另一个视图控制器,而在 ios 9 中底部视图控制器仍然可见?在 iOS 8 中的工作方式不再有效。

【问题讨论】:

@Lorenzo,您应该将其发布为答案,而不是评论。 @Lorenzo,我对“是的,但是......”感到困惑。答案很短吗? 【参考方案1】:

首先您可以将覆盖视图控制器的背景颜色设置为透明色。

您可以使用 presentViewController 方法覆盖新的视图控制器。

来自苹果文档

当使用 UIModalPresentationFullScreen 样式呈现视图控制器时,UIKit 通常会在过渡动画完成后移除底层视图控制器的视图。您可以通过指定 UIModalPresentationOverFullScreen 样式来阻止删除这些视图。

因此您可以将覆盖视图控制器的 modalPresentationStyle 设置为 UIModalPresentationOverFullScreen

我也希望这可能会有所帮助

当使用其中一种全屏演示样式时,启动演示的视图控制器本身必须覆盖整个屏幕。如果呈现的视图控制器没有覆盖屏幕,UIKit 会遍历视图控制器层次结构,直到找到一个覆盖。如果找不到填充屏幕的中间视图控制器,UIKit 会使用窗口的根视图控制器。

【讨论】:

如果你使用了 UIPopoverController,它在 iOS9.0 中已被弃用 谢谢你,但这仍然不起作用。一旦视图控制器位于另一个控制器的顶部,底部视图就会消失,留下黑色背景。【参考方案2】:

要解决这个问题,您只需更改视图的 Alpha 信息。要在其他视图之上获取此视图,请更改 ViewController 的转换样式。

【讨论】:

【参考方案3】:

仅供参考:现在的语法是:

        childVC.modalPresentationStyle = UIModalPresentationStyle.OverFullScreen

【讨论】:

我很困惑这与所提问题有何关系? 请扩展您的答案。 “语法”——什么?您的行实际上并没有创建视图控制器。也许再多几行代码就能阐明你的意思。

以上是关于视图控制器透明背景的主要内容,如果未能解决你的问题,请参考以下文章

如何呈现具有透明背景的模态视图控制器

呈现全屏时的透明视图控制器背景

iOS:具有透明背景的模态 ViewController

具有透明背景的模态 UISplitViewController

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?

具有透明背景的翻转动画