使用不透明度将 ViewController 设置在彼此之上。

Setting ViewControllers on top of each other with opacity.

我是一名新 Swift 作家,正在寻找一个相对具体问题的答案。新手有错误请多多包涵

我正在尝试以编程方式在屏幕上创建一个弹出窗口,将两个视图控制器分层,以便一个视图控制器在另一个视图控制器上可见,具有使背景可见的不透明度级别。

从我的游戏转换后ViewController请看这里:

let gameOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "gameOverID") as! GameOverViewController
    self.addChildViewController(gameOverVC)
    gameOverVC.view.frame = self.view.frame
    self.view.addSubview(gameOverVC.view)
    gameOverVC.didMove(toParentViewController: self) 
}

...我实例化 GameOverViewController 的 ViewController 以适应 GameViewController。之后,我转到我的 GameOverViewController class 并尝试使用以下代码行将背景颜色设置为不透明:

self.view.backgroundColor = UIColor.black.withAlphaComponent(0.8)

问题是我最终得到的是一个不透明的背景,而实际上我宁愿将 GameViewController 放在具有不透明背景的 GameViewController 之上仍然能够看到游戏。

我还在我的 GameOverViewController 中使用以下动画:

 func showAnimate()
{
    self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
    self.view.alpha = 0.0
    UIView.animate(withDuration: 0.25, animations: {
        self.view.alpha = 1.0
        self.view.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
    })
}

func removeAnimate()
{
    UIView.animate(withDuration: 0.25, animations: {
        self.view.transform = CGAffineTransform(scaleX: 1.3, y: 1.3)
        self.view.alpha = 0.0
    }, completion: { (finished: Bool) in
        if (finished)
            {
            self.view.removeFromSuperview()
        }
    })
}

我不确定问题的根源是什么。

感谢您的帮助。

像这样在界面生成器中更改游戏结束视图控制器的背景颜色

此外,请注意您在 removeAnimate func

的这一行中删除了游戏 viewController 的视图
   self.view.removeFromSuperview()

如果你在显示游戏结束之前这样做,这可能会导致黑色背景VC

对于位于顶部的视图,使用:overFullScreen 然后简单地呈现它。

let topVC = topVC()
topVC.modalPresentationStyle = .overFullScreen
self.present(VCTobePresented, animated: true, completion: nil)