2014年1月27日月曜日

[iOS][Objective-C]テキストの表示上の高さを得る


どうも。

数が可変なら、
表示内容のテキストの文字数も可変で、
それに応じた可変の高さにする。

なんてことも、
よくある話…(´・ω・`)

まぁ、
SNSのタイムライン的なヤツとか。

例のごとく、
utilのようなクラスに、
クラスメソッドとして用意するなら…。

+ (CGFloat)getTextHeight:(NSString *)text width:(CGFloat)width fontSize:(CGFloat)fSize {
 
    CGSize boundSize = CGSizeMake(width, CGFLOAT_MAX);
 
    CGSize textSize = [text sizeWithFont:[UIFont systemFontOfSize:fSize]
                       constrainedToSize:boundSize
                           lineBreakMode:NSLineBreakByWordWrapping];

    return textSize.height;
}

フォントサイズだけでなく、
UIFontも引数に取った方がより汎用的かも。

sizeWithFontは、
iOS7ではdeprecatedだという話。
でも、
自分が今開発してるのでは、
iOS7で問題なく動いてるんだよな…。
iOS6もターゲットにしてあるから、
互換性が保たれてるのかな?

sizeWithFontの代わりには、
sizeWithAttributesを使えばいいらしい。

// 〜iOS6
[string sizeWithFont:font];

// iOS7
[string sizeWithAttributes:@{NSFontAttributeName:font}];

そうなると、
上記のメソッドの中身も変わってくるんでしょうが…。
まぁ、
それは困ったその時にやるとしてw


それでは。
ちゃお☆


まこぴー。