У меня есть две строки UILabel. Я хочу, чтобы его режим прерывания строки NSLineBreakByTruncatingMiddle. Проблема, которую я получаю, заключается в том, что текст достаточно мал, чтобы вписаться в одну строку, показывая его в середине метки, а не сверху. Я использую iOS6 и autolayout, поэтому sizeToFit не работает для меня. Как я могу достичь этого? Я хочу, чтобы текст был мал, чтобы соответствовать одной строке, он должен быть выровнен по вертикали. Я пробовал this, но его усечение и отображение текста в одной строке, а не две строки.Как я могу достичь многострочного UILabel с NSLineBreakByTruncatingMiddle и sizeToFit в автозапуске?
Q
Как я могу достичь многострочного UILabel с NSLineBreakByTruncatingMiddle и sizeToFit в автозапуске?
1
A
ответ
0
Вам нужно рассчитать необходимый размер и обновить кадр наклейки:
CGSize s = [myLabelString sizeWithFont:...
constrainedToSize:CGSizeMake(..., MAXFLOAT)
lineBreakMode:NSLineBreakByTruncatingMiddle];
С любым шрифтом, ваш ярлык использует и его ширину.
Ваш ответ, если правильный, но еще одно, что если бы я взял NSAttributedString, его усекающий текст был всего лишь одной строкой, хотя он принимал размер двух строк. Я также попытался установить режим прерывания строки NSParagraphStyle в NSAttributedString, но не работал. Не могли бы вы также уточнить это? – Bhushan
С атрибутными строками вы должны получить размер с 'boundingRectWithSize: options: context:'. – Wain
Привет, я получаю размер, используя boundingRectWithSize: options: context: но все же его усечение атрибутируетсяString в одной строке, если текст больше одной строки. Как использовать Label с двумя строками, NSAttributedString, NSLineBreakByTruncatingMiddle и sizeThatFits? – Bhushan