GADGET FACTORY 雑記帳

iPhone アプリ / Flash コンテンツ /Adobe AIR などを開発していて気づいたことや備忘録、TIPS、HACKなど

Xcode 5 の Storyboard を使ったレイアウトが面倒

今はすでに Xcode 6 がリリースされていたりしますが、Mac のOSをアップデートしないといけないので、未だにマシンの中に入っている最新のXcodeは5.1.1だったりします。

仕事の関係で、今更ながらに Xcode5 を使ったプロジェクトを最初から作ることになり苦戦しております。

特に、iOS6から導入された Auto Layout でのパーツ配置になかなか慣れません。




というのも最近はほとんど、iPhone / Android 両対応の必要があり、アプリの開発にAdobe Flashを使って、Adobe AIR で作成するプロジェクトばかりやっていて、Xcode 5を利用したObjectCネイティブのプロジェクトをあまりやってませんでした。

時々Xcode 5を使うとしても、これまでに作成していたアプリのバージョンアップだったりするので、古い Xcode で作成されたiOS5以前からのものがほとんど。
Storyboardを利用しているプロジェクトはまだ新しい方で、interface builderで1つずつXIBを作っていくようなプロジェクトも多々残ってたりする状況。

そんな状況で、今回新しいiOS6以降対応のプロジェクトをやることになり、Xcode 5 で初めて、一からプロジェクトを作り始めることに。

Auto Layout 対応のせいで画面作成が面倒になった

Xcode4 のStoryboard編集ツールを使った、iOS5までのプロジェクトであれば、Autosizingで、パーツの位置やサイズを、Xcodeの画面右端ペイン(Utilities)の「Size Inspecter」で位置の変更や、サイズの変更などを直感的に設定できていました。
パーツをクリックすれば、その場ですぐに変更もできていて便利でした。

しかし、Xcode 5になってからは、その「Size Inspecter」には、位置の情報は表示されているのですが、Autosizing用のサイズの変更項目などが表示されません。

変わって、「Constraint」というレイアウトを決定するための約束事の設定が必要になり、パーツに設定すれば、その設定された「Constraint」がずらりと並ぶ感じです。

しかも、その「Constraint」は1つの設定につき、1つずつ作られます。
例えば、パーツの横幅を設定するもの、パーツの縦幅を設定するもの、パーツの左からの位置を設定するもの、パーツの上からの位置を設定するものという感じです。

したがって、条件を複数設定するほど、その量が増えていき、認識しにくくなります。

さらに、その「Constraint」を中途半端に、例えば横位置だけ設定すると、ビルドした時に、「Ambiguous Layout」という警告が表示されます。
パーツ数が増えると、大量に表示されて、かなり萎える感じです。

「Auto Layout」を外せば、これらの悩みから解放されますが、その場合は、iOS6とiOS7以降のステータスバーの高さだったり、iPhoneの画面サイズなどに応じた処理をプログラム側で記述する必要が出てきます。

Xcode 5 の「Auto Layout」の「Constraint」も、Xcode 4の Autosizing の設定のように、見た目で直感的にどういう設定になっているか確認できたら、もう少し楽になると思うんですけどね。