Osa*_*zad 1 uilabel cgpoint sprite-kit skscene swift
我有一个UILabel,我希望它显示在屏幕的中心,无论它在哪个iPhone上播放!
但我无法做对!它总是在其他地方但不在中间.
我究竟做错了什么?
这是正在发生的事情的图片和代码!
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))
let w = UIScreen.mainScreen().bounds.width
let h = UIScreen.mainScreen().bounds.height
label = UILabel(frame: CGRect(x: w / 2, y: h / 2, width: 120, height: 30))
label.text = "REPLAY"
label.center = CGPoint(x: w / 2, y: 2)
label.textColor = UIColor.whiteColor()
self.view?.addSubview(label)
Run Code Online (Sandbox Code Playgroud)
pbo*_*dsk 11
我认为你的标签实际上是居中的.
如果我添加红色背景颜色如下:
label.backgroundColor = UIColor.redColor()
Run Code Online (Sandbox Code Playgroud)
并将垂直中心更改为屏幕的中心,即在示例中更改此行:
label.center = CGPoint(x: w / 2, y: 2)
Run Code Online (Sandbox Code Playgroud)
对此:
label.center = CGPoint(x: w / 2, y: h / 2)
Run Code Online (Sandbox Code Playgroud)
我最终得到了这个:
所以,标签实际上是居中的.但是,文本不在标签的中心,这使得当您没有背景颜色时,文本似乎没有居中.
如果我再次更改textAlignment为.Center并删除背景颜色,我最终会得到以下结果:
最终的代码示例如下所示:
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))
let w = UIScreen.mainScreen().bounds.width
let h = UIScreen.mainScreen().bounds.height
label = UILabel(frame: CGRect(x: w / 2, y: h / 2, width: 120, height: 30))
label.text = "REPLAY"
label.center = CGPoint(x: w / 2, y: h / 2)
label.textAlignment = .Center
label.textColor = UIColor.whiteColor()
self.view?.addSubview(label)
}
Run Code Online (Sandbox Code Playgroud)
所有这一切,那么也许你应该看看SKLabelNode,因为@whirlwind在评论中建议,这样你的标签成为了一个整体的一部分,SKScene而不是用螺栓固定在外面的东西UIView(如果这对你有意义的话) ).
希望这对你有所帮助.
| 归档时间: |
|
| 查看次数: |
7163 次 |
| 最近记录: |