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

如何在iOS游戏应用程序swift 3中编程添加按钮?,ios,swift3,uibutton,Ios,Swift3,Uibutton,有人能解释一下在iOS游戏应用程序中为swift 3 Xcode 8编程添加的按钮的代码吗?关于这个主题的所有其他线程我们都在一个视图中,不适合我。我不知道如何将按钮添加到游戏应用程序Main.storyboard,所以我正在尝试制作一个按程序添加的按钮。这是我现在尝试使用的代码,但不起作用: var playAgain = UIButton() playAgain.setTitle("Play Again", for: .normal) playAgain.se

有人能解释一下在iOS游戏应用程序中为swift 3 Xcode 8编程添加的按钮的代码吗?关于这个主题的所有其他线程我们都在一个视图中,不适合我。我不知道如何将按钮添加到游戏应用程序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)

为什么单视图中的按钮在游戏应用程序中会有所不同?另外,当(如果)创建此按钮时,我如何修改touchs end方法以了解按钮何时被触摸?

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

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

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

假设您希望按钮在屏幕上居中(至少现在是这样),请将位置更改为:

    playAgain.frame = CGRect(x: 0, y: 0, width: 100, height: 36)
    playAgain.center = (self.view?.center)!
    self.view?.addSubview(playAgain)
这将使按钮位于游戏场景上方(即z层),因此您可以使用普通的按钮点击,而无需处理
触摸操作
。因此,在添加按钮之后:

    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
    }

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

假设您希望按钮在屏幕上居中(至少现在是这样),请将位置更改为:

    playAgain.frame = CGRect(x: 0, y: 0, width: 100, height: 36)
    playAgain.center = (self.view?.center)!
    self.view?.addSubview(playAgain)
这将使按钮位于游戏场景上方(即z层),因此您可以使用普通的按钮点击,而无需处理
触摸操作
。因此,在添加按钮之后:

    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
    }

请描述:“不起作用”。。。按钮是否未添加到视图中?它是否会被添加,但不会添加到您想要的位置?只是当你点击它时什么都没发生吗?(如果是这种情况,您缺少
addTarget
code)。它没有添加到视图中,您在代码中的何处尝试此操作?在您的GameViewController的
viewDidLoad()
?我正在我的自定义场景中尝试。请描述:“不工作”。。。按钮是否未添加到视图中?它是否会被添加,但不会添加到您想要的位置?只是当你点击它时什么都没发生吗?(如果是这种情况,您缺少
addTarget
code)。它没有添加到视图中,您在代码中的何处尝试此操作?在你的GameViewController的
viewDidLoad()
?我正在我的自定义场景中尝试。只有一个问题…当我用按钮切换到场景时,应用程序因错误而崩溃:线程1:EXC_BAD_指令(code=EXC_1386……。它编译得很好,但崩溃,在控制台中显示(11db)。我在谷歌上搜索了好几次这个错误,但我找不到它适用于此的案例…有什么想法吗?我必须查看更多信息。我使用“游戏”模板创建了一个新项目,并将您的代码添加到
didMove(to view:SKView)
,并且运行良好。没有更多信息,甚至无法猜测你的应用程序中可能发生了什么。我应该如何发布我的文件?你是否使用Dropbox之类的工具?如果没有,看起来Mozilla刚刚发布了一个简单的文件共享网站…我将其上载到剪贴板。这叫做“Gameover”,只是一个问题…当我切换到sc时ene按下按钮,应用程序崩溃,出现错误:线程1:EXC_BAD_指令(code=EXC_1386……。它编译得很好,但崩溃了,在控制台上显示为(11db)。我用谷歌搜索了好几次这个错误,但找不到它适用于此的情况……有什么想法吗?我必须看到更多信息。我使用“游戏”模板,并将您的代码添加到
didMove(查看:SKView)
,并且运行良好。如果没有更多信息,甚至无法猜测你的应用程序中会发生什么。我应该如何发布我的文件?你是否使用Dropbox之类的工具?如果没有,看起来Mozilla刚刚发布了一个简单的文件共享网站……我将其上载到剪贴板。它被称为“Gameover”