2013-10-05 13 views
25

Było metodaJaki jest odpowiednik metod rysowania ciągów znaków iOS 7 przy użyciu NSLineBreakMode?

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

które muszę wymienić teraz dla iOS 7. uzyskać miarę

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

ale jak określić tryb przerwa linia jak słowa owinąć? Przeszukałem dokumentację przypisanych symboli rysunków ciągów, ale nie wspomniałem o trybie podziału linii. Czy to jest zawsze automatyczne zawijanie słów?

Odpowiedz

49

Musisz utworzyć styl akapitu.

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

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

Więcej informacji tutaj: https://developer.apple.com/documentation/uikit/nsparagraphstyle?language=objc

+0

myślę, że można też użyć '[[NSMutableParagraphStyle alloc] startowych]' zamiast zmienny kopię. –

6

w Swift:

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

let attributes: [String: AnyObject] = [ 
    NSFontAttributeName: font, 
    NSParagraphStyleAttributeName: style 
]