我是一名新的斯威夫特作家,正在寻找一个相对具体问题的答案。请原谅任何新手的错误。
我正在尝试以编程方式在屏幕上创建一个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()
}
})
}
我不确定问题的根源是什么。
感谢您的帮助。
答案 0 :(得分:0)
在界面构建器中更改游戏的背景颜色,如此
另外,请注意在removeAnimate func
中删除此行中的游戏viewController视图 self.view.removeFromSuperview()
如果在显示VC游戏之前执行此操作,可能会导致黑色背景
答案 1 :(得分:0)
对于位于顶部的视图,请使用:overFullScreen 然后只显示它。
let topVC = topVC()
topVC.modalPresentationStyle = .overFullScreen
self.present(VCTobePresented, animated: true, completion: nil)