2013-06-28 1 views
1

У меня есть две строки UILabel. Я хочу, чтобы его режим прерывания строки NSLineBreakByTruncatingMiddle. Проблема, которую я получаю, заключается в том, что текст достаточно мал, чтобы вписаться в одну строку, показывая его в середине метки, а не сверху. Я использую iOS6 и autolayout, поэтому sizeToFit не работает для меня. Как я могу достичь этого? Я хочу, чтобы текст был мал, чтобы соответствовать одной строке, он должен быть выровнен по вертикали. Я пробовал this, но его усечение и отображение текста в одной строке, а не две строки.Как я могу достичь многострочного UILabel с NSLineBreakByTruncatingMiddle и sizeToFit в автозапуске?

ответ

0

Вам нужно рассчитать необходимый размер и обновить кадр наклейки:

CGSize s = [myLabelString sizeWithFont:... 
        constrainedToSize:CGSizeMake(..., MAXFLOAT) 
         lineBreakMode:NSLineBreakByTruncatingMiddle]; 

С любым шрифтом, ваш ярлык использует и его ширину.

+0

Ваш ответ, если правильный, но еще одно, что если бы я взял NSAttributedString, его усекающий текст был всего лишь одной строкой, хотя он принимал размер двух строк. Я также попытался установить режим прерывания строки NSParagraphStyle в NSAttributedString, но не работал. Не могли бы вы также уточнить это? – Bhushan

+0

С атрибутными строками вы должны получить размер с 'boundingRectWithSize: options: context:'. – Wain

+0

Привет, я получаю размер, используя boundingRectWithSize: options: context: но все же его усечение атрибутируетсяString в одной строке, если текст больше одной строки. Как использовать Label с двумя строками, NSAttributedString, NSLineBreakByTruncatingMiddle и sizeThatFits? – Bhushan