Storyboardのsize classを使ってiOS7と8に対応させるにはAny×Anyじゃないとダメ

iPad用のアプリを作るときの話です。

iPadのsize classは縦向きも横向きもRegular/Regularってことで、そのsize classでせっせと画面を作ってて、iOS8のSimulatorだとちゃんと表示されてました。それで2画面ぐらい作ったあと、ふと、iOS7のSimulatorで動かしたら画面が真っ白。

えっ!てなって調べたらsize classはiOS8からで、iOS7はAny/Anyで作らないといけないみたい。

しょうがないのでAny/Anyで作り直したんですが、Regular/Regularで配置したやつをAny/Anyで作り直すのは結構大変でした。

  • Regular/Regularのときの全てのViewのConstraintsを紙にメモる
  • インスペクタでR×Rにチェックマーク入ってるのを外してバツボタンで削除
  • インスペクタでAny/Anyのやつにチェック入れる
  • Constraintsを全て消す
  • size classをAny/Any表示にして最初から全てのConstraintsを設定し直す

Any/AnyのサイズはiPadの横向きを想定するとすごく小さいから固定サイズの画像とかラベルとか置くとはみ出しちゃいます。(※追記 Any/AnyでもインスペクタのAttribute InspectorSimulated MetricsSizeiPad Full Screen選べば普通にiPadサイズの大きさでオブジェクト配置できました。)

iPad専用のアプリを作るなら、size classを使ってもほとんどメリットないです。まぁそりゃそうか