私が持っています:
インターフェースビルダーに「スクロール可能なコンテンツの幅があいまいです」という警告が表示されます。
私が知っているこの問題を修正する唯一の方法は、トレーリング制約とリーディング制約を設定することです。しかし、異なるiPhone(5.5 "、4.7"、4 ")については、異なる後続および先行制約を設定する必要があります。
この警告を解消し、すべてのiPhoneサイズでWとHを固定したまま水平方向のビューを中央に表示するにはどうすればよいですか?
この問題を説明するためにGithubリポジトリを作成します。 ScrollViewAmbigous
これは IScrollView Scrollable Content Size Ambiguity の複製ではありませんが、似ています(ただし回答はありません)が、この質問は特に異なるサイズのiPhoneに関連しています。
朝、新鮮なコーヒーを飲みながら、この問題の回避策を見つけました!
Has ambiguous scrollable content width
およびHas ambiguous scrollable content height
迷惑な警告。重要:トレーリングおよび/またはボトム制約を追加する必要があります。 「トップでトップ」ではありません-それはうまくいきません!
この問題を修正する方法を示すサンプルプロジェクトで確認できます。 ScrollViewAmbigous
PS
私はそれが機能する理由とXcodeがどの制約がより優先されているかをどのように検出するのか分かりません(これらの制約に明示的に優先順位を設定していないため).
問題:
ソリューション:
その 'contentView'に厳密な(修正された)制約を追加します。
ベストプラクティス:スクロールビューと同じ幅と高さ。
この問題には多くの混乱があるようです。私の見解は、UIScrollViewには[〜#〜] two [〜#〜]末尾のスペース制約、サブビューの1つに接続する「内部」制約が必要であるということです(したがって、コンテンツの幅を知ることができます)、およびそれを兄弟またはスーパービューに接続する別の「外側」のもので、フレーム幅を認識します。
同じ原則が高さにも適用されます。つまり、2つの下部スペースの制約です。