尝试在 Swift 中将 UILabel 居中
Attempting at centering UILabel in Swift
我正在尝试将 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
显示为向左浮动:
这很奇怪,因为我明确表示 width 应该是 self.view.frame.size.width
,但它似乎忽略了这一点。
我想如果宽度设置为与我声明的完全一样 ( 375 ),那么由于 .textAlignment
属性,文本会很好地居中。
知道为什么这不起作用吗?
您正在调用更新标签框架的 sizeToFit:
- sizeToFit
Resizes and moves the receiver view so it just encloses its subviews.
正如 Jonah 所说,在使用 center
设置 frame
之后,您正在使用 sizeToFit
调整视图大小。因此,当调整视图大小时,它会更改 size
但保持不变 origin
。要解决此问题,请在设置 center
:
之前调用 sizeToFit
sanskritLabel.sizeToFit()
sanskritLabel.center = CGPointMake(self.view.frame.width/2, verse.frame.origin.y + chapterStringSize.height + 20)
我正在尝试将 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
显示为向左浮动:
这很奇怪,因为我明确表示 width 应该是 self.view.frame.size.width
,但它似乎忽略了这一点。
我想如果宽度设置为与我声明的完全一样 ( 375 ),那么由于 .textAlignment
属性,文本会很好地居中。
知道为什么这不起作用吗?
您正在调用更新标签框架的 sizeToFit:
- sizeToFit
Resizes and moves the receiver view so it just encloses its subviews.
正如 Jonah 所说,在使用 center
设置 frame
之后,您正在使用 sizeToFit
调整视图大小。因此,当调整视图大小时,它会更改 size
但保持不变 origin
。要解决此问题,请在设置 center
:
sizeToFit
sanskritLabel.sizeToFit()
sanskritLabel.center = CGPointMake(self.view.frame.width/2, verse.frame.origin.y + chapterStringSize.height + 20)