如何查找UILabel文本是否缩短/缩小?

时间:2011-11-10 13:38:49

标签: objective-c ios uilabel

我正在研究iOS(iPhone和iPad)的应用程序,我的视图中有一个显示一些文本的UILabel。如果文本太长,UILabel会自动缩小它,例如:

“这是一些长篇文章”将显示“这是一些...”

这种行为是正确的,完全可以接受,甚至是预期的,但我想知道文本是否缩短了。有没有办法找到UILabel是否缩短了其内容?

我需要非常简单的解决方案,因为我想使用UILabel魔术功能,比如自动减小字体大小以适应等等。有时文本会很长,所以我会给用户一种方法来在另一个视图中看到它点击按钮后。但是在文本不会太长的情况下,我想隐藏该按钮以使界面变得简单。 任何想法如何实现这一点将不胜感激。

2 个答案:

答案 0 :(得分:6)

在标签的标准字体上询问标签的文字长度。如果它比标签的宽度长,它将被绘制得更小以适应。

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

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

答案 1 :(得分: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.
     }