iOS – 结合NSLineBreakByWordWrapping和NSLineBreakByTruncatingTail
我需要的
我需要写一些文本到PDF。 文本本身可以是任何长度,但我只能显示2行(通过换行),如果空间不够,应该截断第二行的尾部。
我试过了
NSMutableParagraphStyle *text = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; text.lineBreakMode = NSLineBreakByTruncatingTail;
这样,文本只在第一行,并在行尾截断。
NSMutableParagraphStyle *text = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy]; text.lineBreakMode = NSLineBreakByWordWrapping;
这样,文本将换行到第二行,但如果有足够的文本换行,则在第二行末尾不会截断。
我需要一些方法来结合这两种行为。
我所研究的
我发现了一些关于文字包装问题的问题,但没有像这样。 离我最近的是这样的:
NSLineBreakByWord包装在第一线,但NSLineBreakByTruncatingTail第二线?
但是那里的问题是不一样的。 在这个问题中,提问者需要这个行为,但是在一个标签中,他用一些在我的项目的其他部分也使用过的storyboardconfiguration来解决这个问题。 但是这个问题是关于在PDF中的这种行为,使用NSStringDrawingContext
drawInRect
方法。
我使用的是iOS 7(实际上只是更新到了7.1,但两者的情况都是一样的)。
提前致谢。
编辑 – 另外,我看了这个链接之前问,但没有帮助:
https://developer.apple.com/library/ios/documentation/cocoa/reference/ApplicationKit/Classes/NSParagraphStyle_Class/Reference/Reference.html#//apple_ref/doc/c_ref/NSLineBreakByWordWrapping
参考:
@interface NSAttributedString (NSExtendedStringDrawing) - (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(6_0); - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(6_0); @end
通过“NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine”选项,请注意此方法仅适用于NSAttributedString。