4 インチと 3.5 インチの両方の画面サイズで機能するストーリーボード レイアウトの構築について多くの質問と回答がありますが、次のシナリオに適した解決策を見つけることができませんでした。
私は ios6 (および ios7) で autolayout を使用しており、landscpae や ipad をサポートする必要はありません。以下のモックアップのように見えるいくつかのサブビューを持つ UIView があります。どちらの画面サイズにも合うように、ストーリーボードで自動レイアウトの制約を簡単に設定できます。私の質問は、実行時の画面サイズに応じて自動レイアウトに正しい制約を選択させるにはどうすればよいですか?
2 つの異なるストーリーボードを使用したくないことに注意してください。アプリケーション全体でこれを行うのは大変な作業であり、すべてのデリゲート、アウトレット、およびアクションを各ストーリーボードに接続する必要があります。画面を変更すると、2 倍の作業が必要になります。
1 つのストーリーボードでこれを機能させるために 2 つの方法を試しましたが、どちらにも満足できません。
- 制約を 2 倍にします。大きい方の制約 (50) は、小さい方の制約 (30) よりも優先度が高くなります。このアプローチの問題点は、3.5 インチの画面サイズでは、オートレイアウトが、レイアウトを満たすのに十分な、優先度の低い制約をいくつか選択するだけで、優先度の高い制約がいくつか残ることです。
- NSLayoutConstraint をサブクラス化します。このメソッドでは、ストーリーボードのすべての制約が NSDualLayoutConstraint に設定されます。NSDualLayoutConstraint の初期化コードでは、実行時の画面サイズが 3.5 インチの場合、制約の定数が 3_5_constant の値に変更されます。この方法はより決定論的ですが、インターフェイス ビルダーのプレビューで 3.5 インチのレイアウトを確認することはできません。 .
画面サイズが 3.5 インチのときに適用される 2 次定数値がインターフェイス ビルダーの制約のみにあれば、問題は解決します。画面サイズは 4 インチと 3.5 インチ?