web-dev-qa-db-ja.com

不等式制約のあいまいさ

autolayoutと制約を使用してUIViewのサイズを変更する際に問題があります。原点(オリジナル以下)と幅(オリジナル以上)を変更したいのですが、次のとおりです。不等式制約のあいまいさ

これを解決するアイデアはありますか?

ありがとう

view error

constraints error

24
Luca T

3.5インチディスプレイの垂直間隔の制約を2つ以上縮小しようとしたため、小さい画面で縮小したいコンポーネント間に2つの制約を作成する必要がありました。優先度が1000の場合、他の制約は、4インチ画面に適した特定のサイズの同等制約でしたが、優先度は250です。

このようにして、Xcodeは不満を解消し、レイアウトは小さな画面で適切に再配置されました。

enter image description here

59
frin

あなたの見方は水平的に曖昧です。システムがビュー階層のソリューションを1つだけ作成するのに十分な水平制約情報がありません。この場合、現在の制約情報に基づいて、ビューのサイズまたはの左マージンを決定する必要があります。

必要な優先度よりも低い(<1000)制約またはをビューの幅に追加して、定義された幅or左マージン制約に等式制約を追加します。新しい制約を1000未満の優先度にすることにより、新しい制約が既存の不等式制約(必須の制約)と適切に混合できるようになります。これが 別の質問 です。これは、不等式に関してあなたに似ています。

ビューの幅またはビューの左マージンに新しい制約を追加するかどうかによって、ビューのサイズは異なります。これはすべて、変更に応じてレイアウトをどのように動作させるかによって異なります。

6
larsacus

プログラムがxまたは幅を変更する必要があるかどうかを知る方法がないため、これはコンパイラーには(そして論理的には)意味がありません。 2つのうち1つを静的にすることで問題が解決します。

1
Mika

最初に、制約で何をしたいかを知る必要があります。等値未満制約のあるシーンを作らない、等値以上制約を削除してください。 buzビューは幅の制約を定義する必要があります。最初に役割を果たす制約に優先順位を適用します(より大きいか等しい制約またはより小さいか等しい制約)。

0
Ravi Kumar