如何将精灵套件元素置于常规UIKit元素之上

时间:2014-01-06 02:26:50

标签: sprite-kit skspritenode

我试图让用户能够在UIImageView和UIButton上拖动skspritenode,但每当我创建场景时,它都会出现在UI元素后面。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我担心这是不可能的。所有精灵和任何其他元素在SKScene节点上逐帧渲染,不能“拖动”或放置在其他任何位置。这些不是UIKit元素。

在这种情况下,您的视图充当SKScene,因此所有精灵都被渲染到该视图上。

答案 1 :(得分:1)

SKView本身就是一个UIView / NSView。所有Sprite Kit节点(场景也是节点)都是SKView的组成部分并包含在其中。您只能更改视图的绘制顺序,而不能更改其内容。

举一个例子:您尝试做的事情相当于尝试将UIImageView置于UIButton的背景之上,但低于UIButton的标签。

虽然从技术上讲你可以通过一些技巧实现普通的UIView元素,但是对于Sprite Kit节点来说也是如此。它们不是开始时的视图,而是绘制到由SKView表示/管理的OpenGL帧缓冲区上。从Cocoa的角度来看,SKView是一个没有子视图的单一视图。

简单地说:节点不是视图,节点在技术上与视图不兼容。

答案 2 :(得分:0)

UIImageView及其UIButton以及您想要的任何其他内容必须位于比您拥有Sprite Kit内容的SKView低的UIView中。

你需要确保SKView是透明的(至少是它的背景),如果你有时需要它们,它会通过触摸传递到下面的UIView。