На iOS 5.
У меня есть элемент UILabel, который изначально помещен в наконечник. Я хочу, чтобы размещение x оставалось фиксированным. Я хочу, чтобы он занимал либо 1 строку, либо 2 строки. Если более двух строк, следует использовать настройку разрыва строки, чтобы показать многоточие.
Я использую свойство numberOfLines
и -sizeToFit
Если я установлю для свойства UILabel numberOfLines
значение 0, он правильно увидит, что для некоторого текста недостаточно места, и перенесет его на вторую строку после вызова -sizeToFit
, но в редком случае, когда строка достаточно длинная, чтобы растянуться до 3 строк, я получаю три строки, которые мне не нужны. Если я установлю для свойства numberOfLines
значение 2, оно фактически растянет все это на одну строку и удлинит мой начальный набор кадров в кончике, чтобы он стал намного шире.
CGRect titleFrame = [[self titleLabel] frame];
[[self titleLabel] setNumberOfLines:0];
[[self titleLabel] setText:newProductTitleText];
[[self titleLabel] sizeToFit];
CGRect newTitleFrame = [[self titleLabel] frame];
CGRect нужны мне только для того, чтобы я мог вычислять вещи постфактум. Таким образом, установка numberOfLines
на 0 работает и не изменит исходный origin.x в фрейме и разобьет длинный текст на несколько строк, но не ограничит его двумя строками. Установка свойства numberOfLines
на 2, что, когда я прочитал документы Apple
Это свойство управляет максимальным количеством строк, используемых для размещения текста метки в ограничивающем его прямоугольнике. Значение по умолчанию для этого свойства равно 1. Чтобы снять максимальное ограничение и использовать столько строк, сколько необходимо, установите для этого свойства значение 0.
Кажется, я должен установить это значение на два, и оно все еще будет работать. Я бы ожидал, что sizeToFit
будет расширяться в положительном направлении X и Y при расширении, чтобы уместить весь текст, но он расширяется в отрицательном направлении X, когда numberOfLines
установлено на значение, отличное от 0.
ETA: стойки «Autosize» установлены на верх и оставлены, чтобы зафиксировать их на мин. x, y.
Спасибо за любое понимание.
-sizeToFit
, а не о вертикальном выравнивании текста в UILabel. - person chadbag   schedule 27.05.2014