UILabel начинается с вертикального центра - PullRequest
0 голосов
/ 03 июня 2019

Привет, у меня есть 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)

Ответы [ 2 ]

1 голос
/ 03 июня 2019

То, что вы описываете, просто не то, как работает UILabels.Их текст всегда вертикально по центру в пределах высоты метки.Вы устанавливаете метку так, чтобы она была намного выше, чем требуется для текста, поэтому над текстом и под текстом есть место.

Обычная альтернатива - создать UILabel, которая устанавливает свою собственную высоту достаточно, чтобы вместить ее.текст (легко сделать);таким образом, текст начинается в верхнем левом углу метки и отлично заполняет метку.

0 голосов
/ 03 июня 2019

Как уже было сказано, текст внутри 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...