试图在Swift中心UILabel

时间:2016-03-09 15:49:40

标签: ios swift uilabel

我正试图集中UILabel,但它似乎没有响应。这是我的直观代码,但我确信它远不是最好的方法。

    let sanskritLabel  = UILabel(frame: CGRectZero)
        sanskritLabel.text = page!.sanskrit!
        sanskritLabel.frame.size.width  = self.view.frame.size.width
        sanskritLabel.textAlignment     = .Center
        sanskritLabel.numberOfLines     = 0
        sanskritLabel.layer.borderColor       = UIColor.cyanColor().CGColor
        sanskritLabel.layer.borderWidth       = 3.0;
        sanskritLabel.center            = CGPointMake(self.view.frame.width/2, verse.frame.origin.y + chapterStringSize.height + 20)
        sanskritLabel.sizeToFit()

我在这个下面的其他UILabel上使用了它,它们似乎很好地居中。在这种情况下,此UILabel sanskritLabel显示在左侧:

enter image description here

这很奇怪,因为我明确地说宽度应该是self.view.frame.size.width,但它似乎要么忽略了这一点。

我想如果将宽度设置为与我声明的宽度完全相同(375),那么由于.textAlignment属性,文本将处于中心位置。

知道为什么这不起作用?

2 个答案:

答案 0 :(得分:4)

正如Jonah所说,在sizeToFit设置为frame后,您正在使用center调整视图大小。因此,在调整视图大小时,它会更改size但保持相同的origin。要解决此问题,请在设置sizeToFit

之前致电center
sanskritLabel.sizeToFit()
sanskritLabel.center = CGPointMake(self.view.frame.width/2, verse.frame.origin.y + chapterStringSize.height + 20)

答案 1 :(得分:1)

您正在调用更新标签框架的sizeToFit

- sizeToFit
Resizes and moves the receiver view so it just encloses its subviews.