如何判断UILabel的文本是否被缩短或收缩?

3
我正在为iOS(iPhone和iPad)开发应用程序,我的视图上有一个UILabel来显示一些文本。如果文本太长,UILabel会自动缩小它,例如:
“This is some long text”将显示“This is some…”
这种行为是正确的,完全可以接受,甚至是预期的,但我想知道文本是否被缩短了。有没有办法找出UILabel是否缩短了其内容?
我需要非常简单的解决方案,因为我想使用UILabel的魔术功能,如自动缩小字体大小等。有时文本只是非常长,所以我会给用户一种方式在点击按钮后查看所有内容。但如果文本不那么长,我想隐藏该按钮,以使界面简单。
有什么想法可以实现这一点将不胜感激。
2个回答

6

检查标签文本在标准字体下的长度。如果长度大于标签宽度,则会缩小以适应标签。

CGSize stringSize = [aLabel.text sizeWithFont:aLabel.font];
if (stringSize.width > aLabel.frame.size.width) {
        // It's drawing the label with a reduced font.
}

注意:这是一个旧的答案。随着苹果更新其API,一些事情必须改变。基本技术仍然有效,但应该更新使用的方法调用。请参见Vins答案以获取更新。

3

iOS 7中,sizeWithFont方法已被废弃。

CGSize stringSize = [aLabel.text sizeWithAttributes:@{NSFontAttributeName: aLabel.font}];
    if (stringSize.width > aLabel.frame.size.width) {
            // It's drawing the label with a reduced font.
    }

如果标签是多行的:

CGSize stringSize = [aLabel.text sizeWithAttributes:@{NSFontAttributeName: aLabel.font}];
    if (stringSize.width > aLabel.frame.size.width*numOfLines) {
            // It's drawing the label with a reduced font.
     }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接