2012年7月4日水曜日

回転

もともとuniversal appとして作るつもりだったので、なんとなく体裁も整ってきたからおもむろにiPadのシミュレータで見てみた。ボタンとかは倍の大きさにしたほうがいいかなーとか思いながらふと回転させてみたけど回らない。いっちょ回してみるかーといろいろ試してみた。

最初はサイズとか位置とか回転検出して再計算?postのview全部?100以上あるけど一気に?出てくる都度?扇風機の羽の真ん中にiPhoneつけてゆっくり回されたら負荷どうなる?と考えてげんなりしてたけど、普通にautoresizingMaskなるプロパティいじればよいだけと知って安堵。早速試してみるも、うまく動かん。サイズが全く変わらんし、プロパティの値を触るたびに予想を裏切る動作をする。既にコードも複雑化し(自分にとっては)、検証して原因を特定するには要素が多すぎる(自分にとっては)ので、新しい回転用のプロジェクトを作って検証開始。

まずはrootのUIViewControllerにUIImageViewのサブクラスを貼って、その中でwebに落ちてる水原希子の画像URLをrequestして表示する状態から、UIImageViewのautoresizingMaskを2+16にしてテスト。回転に合わせて完璧に動いてる。ここからtumblrクライアント本体の構成に近づけていく。ていうかUIViewControllerのテンプレートからloadViewが消えてる。nib使わない場合はこれで初期化するんじゃなかったっけ?まあいいけど。

で、本体と同じように、UIImageViewをUIViewで包んでやる。しかも二重に。

root(UIViewController) > pvlayer(UIView) > postv(UIView) > photov(UIImageView)

これでやると、本体と同じ症状。サイズが変更されないし、右端による。困った。
入れ子がまずいのかと、一重にしても改善されず。
UIViewがまずいのかと、pvlayerをUIViewControllerにしてphotovをaddSubViewすると、動いた!
二重にしても、UIViewControllerなら動く。

root(UIViewController) > pvlayer(UIViewController) > postv(UIViewController) > photov(UIImageView)

UIViewだと子供をautoresizeしないのか。ネットを調べてみると、回転処理にはUIViewControllerがよい、という内容は見ても、これじゃないとダメ、というのは見つけられなかった。別のプロパティとかがあるのかもしらんが、とりあえずこれでいこう。無知は怖い。
まだ本体は改修していないが、多分いけるだろう。

0 件のコメント:

コメントを投稿