[自在]ネットで実現できる方法を延々と探すより、ありものの技術を組み合わせた方が手っ取り早かったという話

iOSアプリ開発中に、レクタングルいっぱいに、フォントサイズを自動調整してくれる機能を探していたのだが…

数日探してみて「そんな機能はない。」との結論に達した(いや本当はあるのかもしれないが、見つからなかった。)ので、諦めてフォントサイズを変数で実装することに。

以前の考え方:
1)フォント(UIFont)を指定(ここでフォントサイズも固定)
2)文字列(NSString)を決定
3)NSStringの描画メソッド(drawInRect)で、決められたレクタングルに文字列を描画。

レクタングルサイズと文字列のサイズが合わないと、文字列が余ったり、はみ出したり。

レクタングルサイズに合わせてフォントサイズを自動調整してくれないだろうか?

悩む。

新たな考え方:
1)フォント(UIFont)を指定
レクタングルサイズ.heightを元にフォントサイズを指定
2)文字列(NSString)を決定
2−2)NSStringの.widthと.heightを、CGSize変数で取得。(ここで文字列の属性Attributesも指定する必要がある。)
3)drawInRectで描画するレクタングルサイズを、文字列から取得したCGSizeで指定する。

レクタングルサイズ一杯に文字列が表示された!

新たな考え方では、最後に決めるべきレクタングルサイズを、最初からフォントサイズに織り込んでいるのがミソ。

SDKの機能を探して時間を無駄にするより、実現できるように自分のロジックを変更していった方がいいな。どうも、SDKがリッチなので、安易に機能を探してしまうのは問題かもしれないな。
(ただ、いまだにフォントサイズの自動調整機能はあるような気もしているのだが…)

文字列の描画関連のメソッドは、iOS7によって非推奨になっているものが多いので、ブログ情報だと古いものが多いのも注意が必要だな。まぁ、Xcodeが指摘してくれるので非推奨になったのは気がつくのだが、「じゃぁ、どうすれば?」と悩んでしまう。iOS7は見た目の変更もさることながら、開発で使えるメソッドも大幅に整理されていて、過去のコーディングが一気に古くなっている。
例えばNSstringの属性をNSDictionaryで取り込むようになった点は、考え方としては非常に整理されているが、過去のサンプルコードを参考にしてると、ちょっと躓く原因になりそう。(というか、つまづいた。)