如何在iOS游戏应用程序swift 3中添加programmaticaly添加按钮?

时间:2017-08-04 19:05:26

标签: ios swift3 uibutton

有人可以解释swift 3 Xcode 8的iOS游戏应用程序中以编程方式添加按钮的代码吗?关于这个主题的所有其他主题我们都在单一视图中并且对我不起作用。我无法弄清楚如何在游戏应用程序Main.storyboard中添加按钮,所以我正在尝试按照编程方式添加按钮。这是我现在尝试使用但不起作用的代码:

var playAgain = UIButton()
        playAgain.setTitle("Play Again", for: .normal)
        playAgain.setTitleColor(UIColor.black, for: .normal)
        playAgain.backgroundColor = SKColor.green

        playAgain.layer.borderWidth = 2
        playAgain.layer.cornerRadius = 18

        playAgain.frame = CGRect(x: (self.frame.width)/2, y: (self.frame.height)/2, width: 100, height: 36)
        self.view?.addSubview(playAgain)

为什么单一视图中的按钮在游戏应用中会有所不同?此外,当(和如果)创建它时,如何修改Touches结束方法以了解触摸按钮的时间?

2 个答案:

答案 0 :(得分:0)

还有另一种以编程方式创建按钮的方法。您可以创建一个空的UIView并覆盖触摸方法。您还可以在此视图上处理触摸事件并模拟按钮操作。我认为这对你来说是最快捷的方式。

答案 1 :(得分:0)

您的代码正在将按钮添加到.view,但使用SKScene的坐标系。所以,你的按钮就在那里,只是不在视野中。

假设您希望按钮在屏幕上居中(至少目前为止),请将展示位置更改为:

    playAgain.frame = CGRect(x: 0, y: 0, width: 100, height: 36)
    playAgain.center = (self.view?.center)!
    self.view?.addSubview(playAgain)

这会将按钮置于游戏场景(z层,即)之上,因此您可以使用普通按钮点击而无需处理touches。所以,在你添加按钮之后:

    self.view?.addSubview(playAgain)
    playAgain.addTarget(self, action: #selector(playAgainTapped(_:)), for: .touchUpInside)

然后你班上的其他地方:

    func playAgainTapped(_ sender: Any?) -> Void {
        print("Play again was Tapped!")
        // take whatever action you want here
    }