【问题标题】:sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: iOS7 alternativesizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode: iOS7 替代
【发布时间】:2013-10-07 11:58:59
【问题描述】:

请帮我找到弃用方法的替代方法...

CGSize size = [title sizeWithFont:buttonFont
                                  minFontSize:10
                               actualFontSize:nil
                                     forWidth:_view.bounds.size.width
                                lineBreakMode:NSLineBreakByClipping];

(boundingRectWithSize:options:attributes:context:) 可以这样做吗?像这样的...

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIFont systemFontOfSize:10], NSFontAttributeName,
                                nil];

    CGSize size = [title boundingRectWithSize:CGSizeMake(_view.bounds.size.width-kBorder*2, _view.bounds.size.height)
                                      options:NSLineBreakByClipping
                                   attributes:attributes
                                      context:nil].size;

我说的对吗? 期待您的建议:)

【问题讨论】:

    标签: ios7 sizewithfont


    【解决方案1】:

    查看我使用此代码制作的 here 之前的答案:

    - (CGSize)text:(NSString *)text sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size
    {
        if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(7.0))
        {
            NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                              font, NSFontAttributeName,
                                              nil];
    
            CGRect frame = [text boundingRectWithSize:size
                                              options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
                                           attributes:attributesDictionary
                                              context:nil];
    
            return frame.size;
        }
        else
        {
            return [text sizeWithFont:font constrainedToSize:size];
        }
    }
    

    【讨论】:

    • 弱链接将是比显式版本检查更好的解决方案:if ([text respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)])
    • @akashivskyy 好的,谢谢,我会改进我的答案:) 我很好奇,你能解释一下为什么它更好吗?谢谢
    • @JordanMontel 检查您需要的特定 API 总是比检查 iOS 版本更好。
    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 2016-02-07
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 2023-03-22
    相关资源
    最近更新 更多