Отобразить UIView за SKScene в GameViewController - PullRequest
0 голосов
/ 20 марта 2019

У меня есть базовая игра SpriteKit.

То, что я в основном хочу сделать, это функция create_new_ui(), чтобы создать UIView и скрыть его за сценой.

override func viewDidLoad()
{
    super.viewDidLoad()

    create_new_ui()

    if let view = self.view as! SKView?
    {
        // Load the SKScene from 'GameScene.sks'
        let scene = MainScene()

        // Set the scale mode to scale to fit the window
        scene.scaleMode = .resizeFill
        scene.anchorPoint = CGPoint(x: 0.5, y: 0.5)

        // Present the scene
        view.presentScene(scene)

        view.ignoresSiblingOrder = true

        view.showsFPS = true
        view.showsNodeCount = true
    }
}

func create_new_ui()
{
    let ui_view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
    ui_view.center = CGPoint(x: self.view.frame.size.width / 2, y: self.view.frame.size.height / 2)
    ui_view.backgroundColor = UIColor.red

    self.view.addSubview(ui_view)
}

Можете ли вы сказать мне, как я могу переместить ui_view за SKScene?

Я пытался sendSubviewToBack(_:), но безрезультатно. Есть идеи?

enter image description here

1 Ответ

0 голосов
/ 20 марта 2019

Есть несколько способов сделать это. Одним из способов является непосредственное добавление его в окно после того, как представление появилось.

   override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    addFakeView()
   }

func addFakeView(){
    let fview = UIView.init(frame: CGRect.init(x: 100, y: 400, width: 100, height: 100))
    fview.backgroundColor = UIColor.green
    view.window?.insertSubview(fview, at: 0)
}
...