【问题标题】:UILabel with mutiple lines to truncate one long wordUILabel 多行截断一个长单词
【发布时间】:2012-07-05 06:45:34
【问题描述】:

我有一个UIlabel 视图,它允许显示两行字符串。但就我而言,只有一个长词。无论我将换行模式设置为UILineBreakModeTailTruncationUILineBreakModeWordWrap,它总是将单词分成两行。像这样: “xxxxxx xx" 我想在第一行截断它,如下所示: “xxxx……”

有什么方法可以实现。 在大多数情况下,它应该允许显示两行单词。

补充编辑: 以下图为例。前两个标签是我所期望的:一个长词可以截断一行;可以在两行中显示多个短词。 底部标签当前已发生。

【问题讨论】:

  • 我说过,在其他一些情况下,它应该允许显示两行(多个短词可以显示在两行中)。只是在极少数情况下,一个长单词会被字符换行成两行,我只想用“...”在一行中显示。
  • 你到底想要什么我还没明白你的意思?
  • 我想将文本显示为前两个图像。它可以将多个单词分两行显示为右上角的图像,也可以将一个长单词显示为一行中的左上角图像。我不想要底部图像。

标签: iphone ios


【解决方案1】:

为了完成您要求的操作,您需要确定是否只有一个词。如果有,将行数设置为 1,自动收缩应该可以解决问题。如果没有,则将行数设置为0。

例如

UILabel *label = [[UILabel alloc] init];
label.font = [UIFont systemFontOfSize:12.0];
label.adjustsFontSizeToFitWidth = YES;
label.minimumScaleFactor = 0.8;
label.text = NSLocalizedString(@"Information", @"E: 'Information'");
NSUInteger words = [label.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].count;
label.numberOfLines = (words == 1) ? 1 : 0;

斯威夫特 3.0

let label = UILabel()
label.font = UIFont.systemFont(ofSize: 12)
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.8
label.text = NSLocalizedString("Information", comment: "E: 'Information'")
let words = label.text?.components(separatedBy: NSCharacterSet.whitespacesAndNewlines).count
label.numberOfLines = words == 1 ? 1 : 0

【讨论】:

    【解决方案2】:

    什么都别做

    设置第 1 行的编号 无中断模式

    设置字体大小和最小字体大小相同

    看图

    【讨论】:

    • 感谢您的回答,但不适合我的情况。请看我上面的评论。
    【解决方案3】:

    设置行数为1或不设置行数默认为1。换行模式为UILineBreakModeTailTruncation...并专门检查标签的宽度...。不应该是更大的用途如下...

      [lbl setFrame:CGRectMake:(10,10,50,30)];
      [lbl setLineBreakMode:UILineBreakModeTailTruncation];
      [lbl setNumberOfLines:1];
    

    希望对你有帮助...

    【讨论】:

    • 感谢您的回答,但不适合我的情况。请看我上面的评论。
    【解决方案4】:

    通过使标签更宽,您可以解决此问题。

    [lbl setFrame:CGRectMake:(xPosition,yPosition,heightValue,21)];
    

    [lbl setNumberOfLines:1];

    在哪里

    xPosition 和 yPosition 值是您为标签设置的值。

    heightValue 是适当的值,它将在视图中正确对齐您的标签。

    继续……

    【讨论】:

    • 感谢您的回答,但不适合我的情况。请看我上面的评论。
    猜你喜欢
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2011-10-02
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    相关资源
    最近更新 更多