1
-(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. また、sizeWithFont: では、IOS 6 で sizeWithFont:constraintedToSize: を呼び出す必要があると思いますが、デフォルトのサイズを使用します。しかし、サイズはどうなりますか?
  3. 最後に[self sizeWithFont:font];、非推奨の関数であるため、警告が表示されました。その警告を削除したい。

提案?

4

1 に答える 1