【问题标题】:Multiline text not getting ellipsized多行文本没有变椭圆
【发布时间】: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


【解决方案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];

您将看到以下结果:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2014-01-06
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多