Подтвердить что ты не робот

Что эквивалентно NSLineBreakMode в методах рисования строк, привязанных к iOS 7?

Был метод

- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode alignment:(NSTextAlignment)alignment;

который я должен заменить сейчас для iOS 7. Я дошел до

NSDictionary *attributes = @{NSFontAttributeName: font};
[self drawInRect:rect withAttributes:attributes];

но как указать режим разрыва строки, например, перенос слов? Я искал документацию символов атрибута Attributed string, но не упоминал о режиме разрыва строки. Является ли это автомобильно всегда слово-оберткой?

4b9b3361

Ответ 1

Вам нужно создать стиль абзаца.

NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode:NSLineBreakByWordWrapping];

NSDictionary *attributes = @{NSFontAttributeName: font, NSParagraphStyleAttributeName: style};
[self drawInRect:rect withAttributes:attributes];

Более подробная информация здесь: https://developer.apple.com/documentation/uikit/nsparagraphstyle?language=objc

Ответ 2

В Swift 5:

let style = NSMutableParagraphStyle()
style.lineBreakMode = .byWordWrapping

let attributes: [NSAttributedString.Key: Any] = [
   .font: font,
   .paragraphStyle: style
]