NSString drawAtPoint / drawInRect: добавить «...» к усеченной строке - PullRequest
1 голос
/ 31 августа 2009

Я рисую NSString, используя drawAtPoint (drawInRect, это не имеет большого значения).Существует параметр для установки режима разрыва строки, но кто-нибудь знает, как добавить «...» к строкам, если они усекаются?

Один из вариантов - проверить, достаточно ли короткая строка.Если это не так, итеративно удаляйте последний символ до тех пор, пока длина строки + 3 не будет равна максимальной длине.

Я уверен, что есть лучшее решение.Кто-нибудь идея?

Лучший,

Генрих

Ответы [ 3 ]

1 голос
/ 01 сентября 2009

Вам лучше использовать другой NSString метод:

- (CGSize)drawAtPoint:(CGPoint)point 
             forWidth:(CGFloat)width 
             withFont:(UIFont *)font 
        lineBreakMode:(UILineBreakMode)lineBreakMode

И укажите UILineBreakModeTailTruncation как lineBreakMode.

0 голосов
/ 21 марта 2016

Обновление ответа с drawAtPoint:forWidth:withFont:lineBreakMode: устарело с iOS 7.0. Вместо этого теперь вы можете использовать drawInRect:withAttributes:

NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail; NSDictionary *textAttributes = @{NSFontAttributeName : [UIFont systemFontOfSize:20.0f], NSParagraphStyleAttributeName : paragraphStyle}; [text drawInRect:textRect withAttributes:textAttributes];

0 голосов
/ 17 ноября 2015

Вы можете использовать опцию NSStringDrawingTruncatesLastVisibleLine со значением NSStringDrawingUsesLineFragmentOrigin.

[_text drawWithRect:_textRect options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine attributes:attributes context:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...