Iphone 用引号将文本包装在UILabel中?

Iphone 用引号将文本包装在UILabel中?,iphone,objective-c,cocoa-touch,uikit,Iphone,Objective C,Cocoa Touch,Uikit,默认情况下,UILabels会截断文本,然后在末尾添加省略号 如何将所有文本(包括椭圆)用双引号括起来?除非iPhone上有一种我不知道的更方便的方法,否则我认为最简单、最灵活的方法是将UILabel子类化并实现自己的绘图和截断,使用各种sizeWithFont扩展名分别确定字符串和每组引号的宽度 标签文本是否会导致截断(因此始终具有椭圆)?我对此表示怀疑,但如果确实如此,您知道内容将基本上填满宽度,因此您可以在其他UILabel(甚至图像)上做引号。这将为您提供字体和颜色控制。使用两个可编辑的

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


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

除非iPhone上有一种我不知道的更方便的方法,否则我认为最简单、最灵活的方法是将UILabel子类化并实现自己的绘图和截断,使用各种sizeWithFont扩展名分别确定字符串和每组引号的宽度

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

使用两个可编辑的s,第一个保存文本(加上一个打开的引号),第二个只保存一个关闭的引号:

UILabel *label;
label.lineBreakMode = UILineBreakModeMiddleTruncation;
["text that is lon…]["]
有一种正确的方法可以做到这一点,但这并不是最简单的事情。您需要执行以下操作:

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

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

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

你认为可以用这种方法设置引号的字体/颜色吗?也许我误解了。OP目前得到的是“某行…”,他们想要的是“某行…”。。。文本“”,设置中间截断会给它们。我一直在寻找中间截断,至少你帮了我这个答案:染料!如果你不需要的话,不要让事情复杂化。把它包装在一个单独的类中,比如QuotedLabel,这样你就不会用额外的UILabel污染你的代码,你就完成了。