我正在将 UIView 添加到 SKScene 的 View 中。后来,当我想从它的 super View 中删除那个 UIView 时,使用 uiview.removeFromSuperview 的标准方法似乎不起作用。我应该如何完成这个呢?这是我添加 UIView 的方式:
func addContainerView() {
let containerRect = CGRectMake(400, 24, 600, 720)
smallerView = UIView(frame: containerRect)
smallerView.backgroundColor = UIColor.redColor()
self.view.addSubview(smallerView)
}
以下是我尝试删除它的方法:
func removeContainerView() {
smallerView.removeFromSuperview()
}
这一切都发生在 SKScene 类中,所以这里的“self”指的是那个场景。 有什么想法吗?
最佳答案
首先,我想知道您使用的是哪个版本的 swift。
self.view
在 1.2 中是可选的
因此你应该输入:self.view?.addSubview()
如果你的目标是 swift 1.2
我试过用swift 1.2做一个简单的app
class GameScene: SKScene {
let subview = UIView()
override func didMoveToView(view: SKView) {
subview.frame = CGRectMake(0, 0, 100, 100)
subview.backgroundColor = SKColor.orangeColor()
self.view?.addSubview(subview)
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
removeContainerView()
}
func removeContainerView() {
subview.removeFromSuperview()
}
}
上面的代码运行良好。 我能想到您的观点没有被删除的几个原因
- 您确定
removeContainerView
确实被调用了吗?尝试打个断点,看看是否调用 - 如果您在代码中设置了您的 SKView,则可能设置错误。
- 你的 subview 正在被释放或什么的
为了完全调试您的问题,我们需要查看更多代码。
我们需要的是:
- 声明你的 subview
- 调用 removeContainerView() 的所有函数
更好的方法是 pastebin你的 SKScene 类。
关于uiview - removeFromSuperview 不适用于添加到 SKScene 的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694873/