【发布时间】:2014-02-01 06:17:44
【问题描述】:
我正在尝试在矩形内的多行上绘制椭圆形文本。
对于NSLineBreakByTruncatingTail,文档说明
显示该行以使开头适合容器,并且该行末尾缺少的文本由省略号字形指示。虽然此模式适用于多行文本,但更常用于单行文本。
但在这种模式下,我只能得到一行:
但是对于NSLineBreakByWordWrapping,我没有得到超长文本的省略号:
两张图片使用下面相同的代码(红色背景是文本绘制矩形),当然矩形大小相同,所以2行肯定适合。
NSMutableParagraphStyle* paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
paragraphStyle.lineBreakMode = <<see above>>;
paragraphStyle.alignment = NSTextAlignmentNatural;
NSDictionary* drawingAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"HelveticaNeue" size:36],
NSFontAttributeName,
paragraphStyle,
NSParagraphStyleAttributeName,
nil];
const CGRect rect = CGRectMake(...);
[@"I do not get ellipsized in any way" drawInRect:rect withAttributes:drawingAttributes];
如文档所述,有没有办法将椭圆化与多线渲染相结合?使用 UILabel,我只需要将行数设置为 1 以外的值,但是通过代码呈现文本呢?
【问题讨论】:
-
我相信多行意味着...滚动条。你想要 2 行文本字段。所以你可以创建两个textField,一个正常,一个截尾。
-
这不是关于 UI 控件,而是关于通过代码呈现文本!
-
是的,但文本将在某些 UI 中呈现。并且唯一的用户界面将以任何一种方式显示。如果您有两个 UI,那么可以这样做。或者您可能需要使用此要求创建自定义 UI。
-
好吧,我在寻求一种不必使用自定义代码的方法(我肯定不会编写包装+省略号代码)。顺便说一句,我正在渲染图像。
标签: ios multiline nsattributedstring text-rendering