用引号包装UILabel中的文本?

时间:2009-12-27 01:36:07

标签: iphone objective-c cocoa-touch uikit

默认情况下,UILabels会截断文本,然后在末尾添加省略号。

如何将所有文本(包括椭圆)用双引号括起来?

5 个答案:

答案 0 :(得分:1)

UILabel *label;
label.lineBreakMode = UILineBreakModeMiddleTruncation;

答案 1 :(得分:1)

除非在iPhone上有一个我不了解的更好的方便方法,我认为最简单和最灵活的做法是将UILabel子类化并实现自己的绘图和截断,使用各种sizeWithFont扩展来单独确定字符串的宽度和每组引号。

答案 2 :(得分:0)

您的标签文字是否可预测会导致截断(因此始终具有椭圆)?我对此表示怀疑,但如果确实如此,您知道内容基本上会填充宽度,因此您可以将引号标记为其他UILabel(甚至是图像)。这也可以为你提供字体和颜色控制。

答案 3 :(得分:0)

使用两个UILable,第一个包含文本(加上一个开引号),第二个只包含一个关闭引用:

["text that is lon…]["]

答案 4 :(得分:0)

有一种正确的方法可以做到这一点,但它不会是最简单的事情。您需要执行以下操作:

使用引号确定标签的最大高度和最大宽度。确定标签的实际大小。您可以使用sizeWithFont:constrainedToSize:lineBreakMode:来执行此操作。如果第一个小于第二个,请从文本中删除最后一个单词,添加省略号,然后重试。这看起来像是:

NSString *nextLine = rawTextWithoutQuotes;
NSRange range = [nextLine rangeOfString: @" " options: NSBackwardsSearch];
if (range.location == NSNotFound) {
    return nextLine;
} else {
    nextLine = [nextLine substringToIndex: range.location];
}

继续这样做,直到你手动截断你的字符串,然后添加引号和省略号,把它放在你的标签中,你就完成了。