问题
There was a method
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode alignment:(NSTextAlignment)alignment;
which I must replace now for iOS 7. I get as far as
NSDictionary *attributes = @{NSFontAttributeName: font};
[self drawInRect:rect withAttributes:attributes];
but how to specify the line break mode like word wrap? I searched documentation of Attributed string drawing symbols but no mention of line break mode. Is this automartically always word-wrap?
回答1:
You need to create a paragraph style.
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode:NSLineBreakByWordWrapping];
NSDictionary *attributes = @{NSFontAttributeName: font, NSParagraphStyleAttributeName: style};
[self drawInRect:rect withAttributes:attributes];
More information here: https://developer.apple.com/documentation/uikit/nsparagraphstyle?language=objc
回答2:
In Swift 5:
let style = NSMutableParagraphStyle()
style.lineBreakMode = .byWordWrapping
let attributes: [NSAttributedString.Key: Any] = [
.font: font,
.paragraphStyle: style
]
来源:https://stackoverflow.com/questions/19197709/what-is-the-equivalent-of-nslinebreakmode-in-ios-7-attributed-strings-drawing-me