在Swift 3.0中以透明背景呈现UIViewController

4

我正在展示一个透明背景的viewController。但是当它被呈现时,该viewController上的组件是不可见的。只能看到一个空白的viewController。我已经给出了alpha值和黑色背景颜色。 这是当我调用透明viewController时的代码

if indexPath.row==0
{
   let modalViewController = PopUpViewController()
    modalViewController.modalPresentationStyle = .overCurrentContext
    present(modalViewController, animated: true, completion: nil)
 }

enter image description here

但是这个控制器上有一个橙色的UIView,但它是不可见的。提前感谢。在此输入图片描述 在此输入图片描述


请分享橙色视图的属性检查器。 - Mina
@Mina,我已经添加了所需的图像。我能够创建透明的视图控制器,但是该视图控制器的组件不可见。 - Nish
当然,我会更新我的答案。 - Mina
2个回答

3
您只需以以下配置以模态方式呈现具有透明背景的第二个视图控制器即可:

enter image description here

这就是结果:

enter image description here

对于那些可能不熟悉透明度的人们:在这种情况下,为了实现透明效果,最好使用不透明度而不是 Alpha。

enter image description here


它被呈现为透明的,但是第二个视图控制器上的组件变成透明后不可见。这就是我的问题所在。 - Nish
为什么它不是透明的?蓝色应该是透明黑色。 - Nish
这是一个蓝色透明的控制器,放在白色控制器上,按钮和文本是为第二个控制器设计的。 - Mina
你能分享一下在Storyboard中的两个视图控制器的设计吗? - Nish
1
很容易,你只需要在单元格选择中执行performSeguefunc tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { if indexPath.row == 0 { self.performSegue(withIdentifier: "segueToSecondController", sender: nil) } }在storyboard中为你的segue设置标识符,并像图片一样进行配置,它就能正常工作了。请注意,你必须从第一个控制器拖动segue到第二个控制器,而不是从tableview。 - Mina
让我们在聊天中继续这个讨论。点击此处进入聊天室 - Nish

1

您可以将其视为外部视图(透明黑色)和内部视图(橙色视图),请注意,这两个视图在同一层次结构中。(如屏幕截图所示)

  • 视图控制器的默认背景颜色应为clearColor。
  • 外部视图应具有透明的黑色背景。
  • 在Segue的属性检查器中,Segue的呈现属性应设置为Over Full Screen,如图所示。

enter image description here

运行时将会显示。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接