And*_*Dog 6 multiline text-rendering nsattributedstring ios
我试图在矩形内的多行上绘制椭圆化文本.
因为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];
Run Code Online (Sandbox Code Playgroud)
有没有办法将椭圆化和多线渲染结合起来,正如文档所说的那样?使用UILabel,我只需要将行数设置为1以外的值,但是通过代码进行文本渲染呢?
我不明白您为什么使用 NSMutableParagraphStyle 和 drawInRect,可能我需要有关您尝试工作的上下文的更多信息。
但使用这个简单的技术:
UILabel *label = [[UILabel alloc] initWithFrame:(CGRect){0,0,300,100}];
label.numberOfLines = 0;
label.backgroundColor = [UIColor redColor];
label.center = self.view.center;
label.font = [UIFont fontWithName:@"HelveticaNeue" size:36];
label.textAlignment = NSTextAlignmentNatural;
label.lineBreakMode = NSLineBreakByTruncatingTail;
label.text = @"I do not get ellipsized in any way";
[self.view addSubview:label];
Run Code Online (Sandbox Code Playgroud)
您将看到以下结果:

我的建议是在这种情况下摆脱drawInRect。