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

时间:2018-01-16 17:46:45

标签: ios swift viewcontroller

我是一名新的斯威夫特作家,正在寻找一个相对具体问题的答案。请原谅任何新手的错误。

我正在尝试以编程方式在屏幕上创建一个Pop Up,它将两个视图控制器分层,以便一个视图控制器在另一个视图控制器上可见,其中不透明度使背景可见。

从我的GameViewController转换后,请看这里:

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类并尝试使用以下代码行将背景颜色设置为不透明:

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()
        }
    })
}

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在界面构建器中更改游戏的背景颜色,如此

enter image description here

另外,请注意在removeAnimate func

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

如果在显示VC游戏之前执行此操作,可能会导致黑色背景

答案 1 :(得分:0)

对于位于顶部的视图,请使用:overFullScreen 然后只显示它。

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