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