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。