2013/10/03

【Objective-C/iOS7】sizeWithFontをsizeWithAttributesに書き換える

後藤です。

iOS6から7になり、deprecatedになったものの一つにsizeWithFontがあります。
int width = [_label.text sizeWithFont:_label.font].width;
みたいなものなど。
かわりにsizeWithAttributesを使えと言ってきますが、sizeWithFontはUIFontだけどsizeWithAttributesはNSDictionaryだ、しかもUIFontで自分で作ったやつじゃなくてラベルのフォントをとかどうDictionaryに変換したら、、
と思ってしばらく(数時間)放置していたのですが、気が向いて検索したらあっさり見つかった(でも日本語ではまだなさそうだった)ので、メモしておきます。
int width = [_label.text sizeWithAttributes:@{NSFontAttributeName:_label.font}].width;
とすればいいようです。
iOS6からNSAttributedStringというのが追加されたそうで、NSFontAttributeNameはそれの属性のひとつ。Appleとしてはそっちを使うようにしてほしいということなのでしょうか。


参考:
objective c - Replacement for deprecated sizeWithFont: in iOS 7? - Stack Overflow
NSAttributedStringによる文字装飾 – Cyber Passion for iOS

2 件のコメント :