【问题标题】:Determine Font Size After Autoshrink确定自动收缩后的字体大小
【发布时间】:2012-08-19 15:05:54
【问题描述】:

我有 2 个用于记分应用的 UILabel(Home 和 Away)。用户可以点击 Home 或 Away 并将标签更改为他们喜欢的任何内容。这一切都很好。当用户输入的名称大于标签大小时,它将缩小字体以适应。这使得 2 个标签的字体大小不再匹配,并且看起来不正确。我的问题:如何将一个标签的字体大小设置为另一个已“自动收缩”的标签的大小?

我还意识到我需要编写代码来确定两个标签之间哪个字体大小更小,并将它们都设置为那个数字。只要我得到上述问题的答案,我认为我不会对此有任何疑问。看起来应该很简单,但到目前为止我还没有找到。

【问题讨论】:

    标签: ios xcode uilabel font-size


    【解决方案1】:

    所以我希望你知道这两个标签的框架大小。

    使用– sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: 找出它会使用的最小字体大小。

    如果您有任何疑问,请告诉我。

    【讨论】:

    • 谢谢,现在一切正常。不知道我怎么错过了这个方法。
    • 我正在寻找替代方案,因为这在 iOS 7 中已被弃用。
    【解决方案2】:

    对我来说这很好用:

    - (CGFloat)actualTitleFontSize
    {
        NSStringDrawingContext *labelContext = [NSStringDrawingContext new];
        labelContext.minimumScaleFactor = 0.2;
    
        NSAttributedString *attributedString =
            [[NSAttributedString alloc] initWithString:label.text attributes:@{NSFontAttributeName : label.font}];
        [attributedString boundingRectWithSize:label.frame.size
                                       options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                       context:labelContext];
    
        CGFloat actualFontSize = label.font.pointSize * labelContext.actualScaleFactor;
    
        return actualFontSize;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 2023-04-05
      相关资源
      最近更新 更多