我正在研究iOS(iPhone和iPad)的应用程序,我的视图中有一个显示一些文本的UILabel。如果文本太长,UILabel会自动缩小它,例如:
“这是一些长篇文章”将显示“这是一些...”
这种行为是正确的,完全可以接受,甚至是预期的,但我想知道文本是否缩短了。有没有办法找到UILabel是否缩短了其内容?
我需要非常简单的解决方案,因为我想使用UILabel魔术功能,比如自动减小字体大小以适应等等。有时文本会很长,所以我会给用户一种方法来在另一个视图中看到它点击按钮后。但是在文本不会太长的情况下,我想隐藏该按钮以使界面变得简单。 任何想法如何实现这一点将不胜感激。
答案 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.
}