1. ホーム
  2. ios

[解決済み] iOS 5との後方互換性を維持しながら、iOS 6で自動レイアウトを有効にする

2022-04-27 14:21:03

質問

iOS 6の新しいオートレイアウト機能を利用しつつ、iOSの旧バージョンで古いデバイスとの互換性を保つには、どのような方法がありますか?

どのように解決するのですか?

オートレイアウトは、.storyboardファイルまたは.xibファイルごとに有効または無効にすることができます。ただ、特定のファイルを選択し、XcodeのFileインスペクタを使って、"Use Autolayout"プロパティを変更するだけです。

iOS 6.0 以前のバージョンをデプロイメントターゲットに設定し、オートレイアウトを有効にしたインターフェイスファイルを使用すると、コンパイルエラーになるなど。

MainStoryboard.storyboard:3 でエラーが発生しました。6.0より前のiOSバージョンでの自動レイアウト

プロジェクトでautolayoutを使用し、かつiOS4-5との互換性を保つためのオプションの1つは、以下の2つを作成することです。 ターゲット : 一つはデプロイメントターゲットのiOS 6.0用、もう一つはそれ以前のiOSバージョン用、などです。

ストーリーボードとXIBファイルについても、それぞれ2つのバージョンを作成し、オートレイアウトを有効にしたものを6.0ターゲットで、もう一方をレガシーターゲットで使用するといったことが可能です。

そして、iOS6ターゲットのBuildフェーズにMainStoryBoardAutoSizeを、iOS4ターゲットにもう1つのファイルを追加します。複数のターゲットを使用する方法については、以下を参照してください。 こちら .

EDIT:として marchinramの回答 ストーリーボード・ファイルをコードから読み込み、Xcodeの "Main Storyboard" 設定を使用して初期ストーリーボードを設定しない場合、単一のターゲットを使用することができることを指摘しています。

私にとっては、複数のターゲットとインターフェイスファイルを管理する複雑さが加わるコストは、autolayoutを使うメリットを上回ると思われます。iOS4-5との互換性が必要な場合は、特殊なケースを除いて、古いオートサイジング(またはコードからのlayoutSubViews)だけを使用する方がはるかに良いでしょう。