UILabel从垂直中心开始

时间:2019-06-03 05:57:05

标签: ios swift uilabel

嗨,我有一个从我的代码中添加的UILabel。我已将其设置为

let lb3 = UILabel(frame: CGRect(x: 0, y: 0, width: summaryView.frame.width - 20, height: 120))

        lb3.text = "This is body of the message. This is body of the message. This is body of the message. This is body of the message."
        lb3.textAlignment   = .left
        lb3.numberOfLines   = 10
        lb3.lineBreakMode   = .byWordWrapping
        lb3.backgroundColor = UIColor.cyan
        lb3.font = UIFont.systemFont(ofSize: 12, weight: .light)

根据摘要,lb3的总高度为120 所以左上角在坐标(0,0) 右下角的坐标为(x = width,120) 假设此视图从lb3开始,(0, 60)(0, 0)开始,但我希望lb3(0, 0)本身开始而不是从垂直中心开始。

我以以下方式添加了lb3,因为这是我的视图层次结构

summaryView.addSubview(lb3)
v.addSubview(summaryView)
self.view.addSubview(v)

2 个答案:

答案 0 :(得分:1)

您所描述的不是UILabels的工作原理。他们的文本始终在标签高度内垂直居中。您将标签设置为比其文本所需的高度高得多,因此在文本上方和文本下方都有空间。

通常的选择是制作一个UILabel,其高度足以容纳其文本(易于执行);这样,文本将从标签的左上方开始,并完美地填充标签。

答案 1 :(得分:0)

如前所述,UILabel中的文本将始终垂直居中。一个适合您的解决方法是:

var frame = CGRect(x: 0, y: 0, width: summaryView.frame.width - 20, height: 120)
let lb3 = UILabel(frame: frame)
lb3.text = "This is body of the message. This is body of the message. This is body of the message. This is body of the message."
lb3.textAlignment   = .left
lb3.numberOfLines   = 10
lb3.lineBreakMode   = .byWordWrapping
lb3.backgroundColor = UIColor.cyan
lb3.font = UIFont.systemFont(ofSize: 12, weight: .light)
lb3.sizeToFit()
frame.size.height = lb3.frame.size.height
lb3.frame = frame