【问题标题】:How to find if UILabel text is shortened/shrinked?如何查找 UILabel 文本是否缩短/缩小?
【发布时间】:2011-11-10 13:38:48
【问题描述】:

我正在开发适用于 iOS(iPhone 和 iPad)的应用程序,并且我的视图上有一个 UILabel,它显示了一些文本。如果文字过长,UILabel 会自动缩小,例如:

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

这种行为是正确的,完全可以接受,甚至是意料之中的,但我想知道文本是否被缩短。有什么办法可以查到 UILabel 是否缩短了它的内容?

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

【问题讨论】:

    标签: objective-c ios uilabel


    【解决方案1】:

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

    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 答案。

    【讨论】:

      【解决方案2】:

      在 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.
           }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        • 1970-01-01
        相关资源
        最近更新 更多