我正试图集中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
显示在左侧:
这很奇怪,因为我明确地说宽度应该是self.view.frame.size.width
,但它似乎要么忽略了这一点。
我想如果将宽度设置为与我声明的宽度完全相同(375),那么由于.textAlignment
属性,文本将处于中心位置。
知道为什么这不起作用?
答案 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.