嗨,我的代码中添加了一个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=宽度,120)
lb3是从(0, 60)开始的,假设这个视图是从(0, 0)开始的,但是我希望lb3(0, 0)本身开始,而不是从它的垂直中心开始。
我以如下方式添加了lb3,因为这是我的视图层次结构
summaryView.addSubview(lb3)
v.addSubview(summaryView)
self.view.addSubview(v)

最佳答案

你所描述的并不是UILabels的工作原理。它们的文本始终垂直居中于标签的高度内。您正在将标签设置为比文本所需的高度高得多,因此文本上方和文本下方都有空间。
通常的替代方法是创建一个UILabel,该UILabel设置自己的高度,刚好足以包含文本(很容易做到);这样,文本从标签的左上角开始,并完美地填充标签。

10-08 06:26