使用不透明度将 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)
我是一名新 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)