テキスト領域の高さを求めるには?
UILabelオブジェクトに使う sizeThatFits: に感動した。これがあれば、面倒なテキストの高さ計算って全部済んでしまうのではないかしら。
2014-05-12 15:47:00@hkato193 とかいきなり言ってもしょうがないと思うので例をあげますが、UITableViewのセルの中に1個SizeThatFitsするUILabelを置くとiPhone 5sでもinstruments上で150msとか食ってheavy stack常連行きになります。
2014-05-12 15:48:20@hkato193 逆に言えば滅多にサイズを動的計算しない箇所であれば使っても良いと思います。それでも注意はした方がいいと思います。内部的にはCTGlyph/Run/Frameの計算をやるので遅いわけです。
2014-05-12 15:49:28@hkato193 今こいつをどうやって手元のプログラムから除去してやろうかとか思ってます。他のheavy stackは全部倒したんですがこいつだけ数が多くて根っこが深くて。まぁiPhone 5以上の実機だと30FPSぐらいは出てるのでバレてないみたいなんですけど。
2014-05-12 15:50:27@akisutesama そうなのですね。古いAPIだから、さぞかしチューニングされているのだろうなとおもってドキュメントを読んでいました。boundingRectWithSize:options:attributes:context:だとそんなことないですよね、たしか。
2014-05-12 15:52:26@akisutesama およよ、そうなのですね。そのあたりのノウハウはとてもタメになります。コンパイル時に計算させるとか、キャッシュさせるとか、いずれにしても茨の道ですね…
2014-05-12 15:55:43@hkato193 @akisutesama UITableViewCellに乗るくらいのサイズを計算するぶんには、そこまでかかるのはだいぶ特殊ケースじゃないかな。iPhone 5sならたいていの使い方だったらもう2ケタ速いと思う。
2014-05-12 19:03:41@k_katsumi @hkato193 うそーん。まぁ確かに存在する限りのラベルぜんぶsizeThatFitsしちゃってるからここまで遅いのかもしれんけど。
2014-05-12 19:23:56@akisutesama @hkato193 まあ内容によってそれくらいかかることもあるとは思います。テキストの量やスタイルによって線形にかかる時間は増えていくので。ただ、たいていのケースではそこまで気にしないで使えるはず、、、という。特にiPhone 5sだったら。
2014-05-12 19:25:48@k_katsumi @hkato193 あー、systemFontじゃなくてHiraKakuPro-W6とか明示指定してるからとかあるのかもしれんなぁ。ひょっとしたら。
2014-05-12 19:26:34@akisutesama @hkato193 ヒラギノか。。。ヒラギノはあれだな。。。ちょっとフォント指定して測ってみる。
2014-05-12 19:27:28@akisutesama @hkato193 僕が試した限りはフォントを指定することによる有意な差は無かった。ただ、システムフォントでもヒラギノでもやたら遅いやつが稀にいるのは確認している。(9割9分が0.001秒なのに0.03秒かかるやつが稀にいる、って感じ)
2014-05-12 19:54:23