gpt4 book ai didi

swift - 以编程方式添加的 UIButton 在切换场景后不会消失

转载 作者:行者123 更新时间:2023-11-30 12:14:03 24 4
gpt4 key购买 nike

我在 Swift 3 中使用游戏应用程序模板,当我从“开始”屏幕转换到“游戏”场景时,“开始”屏幕上的按钮不会消失。 我读过其他人的类似帖子,但没有任何帮助。我的按钮是一个以编程方式添加的 uibutton,按钮后面有一个 uibezierpath 圆角矩形,使其看起来不错。问题是,当我更改场景时,它(按钮和 UIBezierpath)不会消失 - 它与“开始”屏幕位于完全相同的位置。我的按钮代码与 UIBezierpath:

let playAgain = UIButton()
playAgain.frame = CGRect(x: 225, y: 247, width: 115, height: 36)

playAgain.backgroundColor = SKColor.lightGray
playAgain.setTitle("Play", for: .normal)

playAgain.setTitleColor(.black, for: .normal)

self.view?.addSubview(playAgain)
playAgain.addTarget(self, action: #selector(playAgainTapped(_:)), for: .touchUpInside)
//now for the bezierpath/ rounded rect
//let doYourPath = UIBezierPath(rect: CGRect(x: 20, y: 20, width: 100, height: 36))

//this also works
let roundRect = UIBezierPath(roundedRect: CGRect(x: 218, y: 240, width: 130, height: 50), cornerRadius: 18)
let layer = CAShapeLayer()
layer.path = roundRect.cgPath
layer.strokeColor = UIColor.black.cgColor
layer.fillColor = UIColor.lightGray.cgColor
self.view?.layer.addSublayer(layer)

func playAgainTapped(_ sender: Any?) -> Void {
print("***********")

backToGame()
}

切换场景代码:

func backToGame(){
removeAllChildren()

run(SKAction.sequence([
SKAction.wait(forDuration: 3.0),
SKAction.run() {
// 5
let reveal = SKTransition.flipHorizontal(withDuration: 0.5)
let scene = GameScene(size: self.size)
self.view?.presentScene(scene, transition:reveal)
}
]))
}

有什么想法吗?

最佳答案

您正在与按钮的 super View 相同的 View 上呈现场景。

由于场景独立于场景中的 View ,因此您的按钮将保持不变,因此如果您希望删除该按钮,则应该显式删除该按钮。

全局声明按钮和圆角矩形,并从 backToGame 中的 super View / super 层删除它们

let playAgain = UIButton()
let layer = CAShapeLayer()

func backToGame(){
removeAllChildren()

playAgain.removeFromSuperview()
layer.removeFromSuperlayer()

run(SKAction.sequence([
SKAction.wait(forDuration: 3.0),
SKAction.run() {
// 5
let reveal = SKTransition.flipHorizontal(withDuration: 0.5)
let scene = GameScene(size: self.size)
self.view?.presentScene(scene, transition:reveal)
}
]))
}

关于swift - 以编程方式添加的 UIButton 在切换场景后不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45644504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com