如何在iOS上使用带有setNumberOfLines的NSLineBreakByCharWrapping:1?

时间:2014-03-24 13:13:34

标签: ios uilabel textwrapping

例如,如果UILabel的文字是:"Questions that may already have your answer",我希望它能够打印出来 "Questions that may alr"。我不想剪辑最后一个字符,而是剪切文本。

我不能使用字符限制,因为大多数字体都不是等宽字体。我不能使用剪辑,因为它可能会在另一点剪切文本,或者它可能会从任何位置剪切最后一个字母“r”。

我想要的行为与NSLineBreakByCharWrapping numberOfLines = 0相似。

所以,我希望它丢弃(换行)那个不合适的最后一个字符,但是我想让它掉落/换行到一个隐藏空间=我不想要第二行。

这怎么可能?

2 个答案:

答案 0 :(得分:1)

要获得所需的输出,您需要知道标签的宽度,可以通过以下方法知道:

CGSize size = [string sizeWithAttributes:
                       @{NSFontAttributeName:
                         [UIFont systemFontOfSize:17.0f]}]; // iOS 7 and later

CGSize size = [string sizeWithFont: [UIFont systemFontOfSize:17.0f]]; // prior to iOS 7
  • 使用上面计算的尺寸设置标签尺寸。
  • 将numberOfLines属性设置为1;
  • 将lineBreakMode属性设置为NSLineBreakByCharWrapping;

    UILabel *yourLbl = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, size.width, 50)];
    placeLbl.numberOfLines = 1;
    placeLbl.lineBreakMode = NSLineBreakByCharWrapping;
    

答案 1 :(得分:1)

In swift 3.0

labelObject.numberOfLines = 0;
labelObject.lineBreakMode = NSLineBreakMode.byCharWrapping