如何在 SKView 之上添加 UIView?

Posted

技术标签:

【中文标题】如何在 SKView 之上添加 UIView?【英文标题】:How to add UIView on top of SKView? 【发布时间】:2016-05-16 01:40:06 【问题描述】:

我想在 SKView 之上添加一个自定义 NSView。但是,它永远不会出现。不知道发生了什么...

class GameScene: SKScene 
    override func didMoveToView(view: SKView) 
        //Trying to add Custom View
        let smallView = NSView(frame: NSRect(origin:CGPoint(x: 100,y: 100),   size: CGSize(width: 200, height: 200)))
        let layer = CALayer()
        layer.backgroundColor = CGColorCreateGenericRGB(1.0, 0.0, 0.0, 0.4)
        smallView.layer = layer
        view.superview!.addSubview(smallView)
    

谁能告诉我这里发生了什么?我什至尝试在 MainStory 板上添加一些 NSLabel。什么都没发生。

我想在 SKScene 上使用 Coregraphhics 和 Show 绘制一些东西。但是,我无法继续前进。

https://github.com/cocoBavan/NSViewInSpriteKit

【问题讨论】:

如果你得到最新的代码,你会发现我以某种方式通过 [1] 让它工作。使 NSView 成为 layer-backed view [2]。将 SKScene 移动到 SKView 后,在将其附加到 SKView 之前添加延迟。我不知道它为什么起作用。任何见解都值得赞赏。 【参考方案1】:

尝试从您的 ViewController 添加 UIView,而不是从 SKScene 添加它。 在您的 VC 添加函数中(例如),创建 UIView,然后将其添加为视图的子视图,如下所示:

let myView = UIView(frame: CGRect(x: 0, y:0, width: 100, height: 100))
self.view.addSubview(myView)

它将在现有视图之上添加一个新视图,因此您的 GameScene 将位于新 UIView 之下。

【讨论】:

以上是关于如何在 SKView 之上添加 UIView?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式将自定义 UIView 添加到 UIScrollView 之上的 Stackview?

如何正确调整 SKView 子视图和 SKScene 的大小

如何从 SKView 转换到 SCNView?

无法将“UIView”类型的值转换为“SKView”(已删除情节提要)

iOS:UIView 与 SKView

无法将“UIView”类型的值转换为“SKView”