【问题标题】:Replacing deprecated IOS 7 function for sizeWithFont. How to make it more elegant?替换 sizeWithFont 已弃用的 IOS 7 函数。如何让它更优雅?
【发布时间】:2014-07-06 04:01:40
【问题描述】:
-(CGSize) sizeWithFont2:(UIFont *)font
{
    if ([self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)])
    {
        CGSize result = [self sizeWithAttributes:@{NSFontAttributeName:font}];
        return result;
    }
    return [self sizeWithFont:font];
}
- (CGSize) sizeWithFont2:(UIFont *)font constrainedToSize:(CGSize)size
{
    if ([self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)])
    {
        CGRect frame = [self boundingRectWithSize:size
                                          options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
                                       attributes:@{NSFontAttributeName:font}
                                          context:nil];
        return frame.size;
    }
    else
    {
        return [self sizeWithFont:font constrainedToSize:size];
    }
}

- (CGSize) sizeWithFont2:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode) lineBreakMode
{
    return [self sizeWithFont2:font constrainedToSize:size]; //the NSLineBreakMode not used?

}

注意代码有3个问题:

  1. 对于- (CGSize) sizeWithFont2:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode) lineBreakMode,根本不使用参数lineBreakMode。我不知道如何在 IOS 7 中使用它。我在 stackOverflow 中环顾四周,那里的答案也没有使用该参数。
  2. 另外我认为在 IOS 6 中 sizeWithFont: 必须调用 sizeWithFont:constraintedToSize: 但使用默认大小。但是尺寸是多少?
  3. 最后我在[self sizeWithFont:font]; 收到警告,因为它是一个已弃用的函数。我想删除该警告。

建议?

【问题讨论】:

    标签: objective-c ios7


    【解决方案1】:

    第 3 点:

    如果您使用 SDK7,您将始终收到此警告或错误。

    第 2 点:

    你可以选择你喜欢的尺寸

    CGSize maximumSize = CGSizeMake(300, FLT_MAX);
    

    您可以选择 300 作为宽度,因为它是屏幕尺寸,边距有一点空间。 但是,您应该使用自己的字体和大小值。

    【讨论】:

    • 为什么不 CGSizeMake(FLT_MAX, FLT_MAX);
    • 最好的方法是使用 NSAttributedString 获取字符串的宽度。我这样做是为了计算文本视图的高度:stackoverflow.com/questions/19028743/…
    猜你喜欢
    • 2013-09-24
    • 2015-06-18
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    相关资源
    最近更新 更多