【问题标题】:UILabel does not appear on SKSceneUILabel 没有出现在 SKScene 上
【发布时间】:2016-12-14 01:26:07
【问题描述】:

我正在尝试在我的SKScene 上创建一个label,但它没有出现。我不知道出了什么问题。代码看起来非常好:

class end: SKScene {

    var label = UILabel()

    override func didMoveToView(view: SKView) {
        scene?.backgroundColor = UIColor(red: CGFloat(59.0/255.0), green: CGFloat(89.0/255.0), blue: CGFloat(152.0/255.0), alpha: CGFloat(1.0))

         label.text = "Game Over!"
         label.backgroundColor = UIColor.blackColor()
         label = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width/3, height: 30))
         label.center = CGPoint(x: view.frame.size.width / 2, y: view.frame.size.width/7)
         label.textColor = UIColor.whiteColor()
         self.view?.addSubview(label)      
    }
}

【问题讨论】:

  • 你怎么知道它没有出现?首先,什么是.center?据我所知,这不是一个正常的 UILabel 属性
  • n/m center 是 UIVIew 的成员,所以现在的问题是坐标是什么。我将假设您正在使用自动布局,并且在调用 didMoveToView 时,您正在使用默认坐标工作,然后自动布局可能会接管将视图移动到某个可预见范围之外

标签: swift sprite-kit uilabel skscene skview


【解决方案1】:

Sprite-kit 中,您应该在场景中使用SKLabelNode,而不是直接在视图中添加UIKit 标签,因为这可能会导致游戏性能下降。

我举个例子:

let titleLabel = SKLabelNode(fontNamed:"HelveticaNeue-Bold")
titleLabel.text = String("Game Over!")
titleLabel.fontColor = SKColor.whiteColor()
titleLabel.position = CGPoint(x: size.width/2.0, y: size.height/2)
self.addChild(titleLabel)

您也可以在 Sprite-kit Xcode 演示项目“hello, world”中找到SKLabelNode

【讨论】:

  • 这真的很有帮助!!非常感谢!
【解决方案2】:

问题是你设置了textColorbackgroundColorwhiteColor(),改变任何一个都会正确显示你的文字。

编辑:

我认为您想在 view 内添加标签,作为参数传递,而不是使用 view.addSubview(label) 而不是 self.view?.addSubview(label)

【讨论】:

  • 我将背景更改为黑色,但仍然没有显示。即使我没有改变,白色的标签应该已经显示在屏幕上,但它根本不显示
  • @NDoc self.view 在调用 didMoveToView 时填充
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 2018-01-08
  • 2021-02-02
相关资源
最近更新 更多