2017-01-14 15 views
1

私は制約エラーを持って、私が何をしたいのかInterface Builderを - 制約最大幅とマージン

「は、ビューを中央のビューに20のマージンを持っている、と320の最大幅持た」

です

iPadではビューが伸ばされていないが、小さいデバイスではビューの幅が320未満で、マージンが20ポイントになることがあります。

しかし、これらのルールを使用するとエラーが発生します。余白は> = 20、幅は< = 320となり、ビューにはそれをどのように一致させるかわかりません。

私は優先度を使ってみましたが、どのように動作するのかわかりません。何も得られませんでした。

1つのビューとその制約を使用して目的の効果を達成するにはどうすればよいですか?このよう

enter image description here

+2

先行制約と後続制約を= 20に変更し、それらの優先順位を999に設定して、より広いデバイスで破棄できるようにします。 – Paulw11

+0

"center it horizo​​ntally"と言っているので、先行制約と後続制約は不要です。 – matt

+0

@ Paulw11クール、それはトリックを作る!私はそれを受け入れることができるように答えとして投稿してください。 – htafoya

答えて

4

を、自動レイアウトは、それがconflのイベントで破るべき制約を知っている必要がありますこれは優先順位によって行われます。ただし、先行/後続および幅の制約はすべて相対的なので、別の競合が発生します。これは、オートレイアウトがビューの幅を決定できないことを意味します。

先行/後続の制約を= 20に変更し、優先順位を999に設定して、より広いデバイスで破棄できるようにします。これにより、幅が決定され、競合が解消されます。

1

:我々はすでに水平に集中しているとして(1)私たちは、末尾のマージン制約を必要としない、との(2)幅という

enter image description here

320は優先順位を下げているため、不平等をもたらすマージン制約が疑わしいときに目指すが、そうでなければ干渉しないようにする。

これは、それが肖像画にiPhone 4Sのように見えるものです:私たちは、側縁に拘束されています

enter image description here

これは当然のそれは風景の中にiPhone 4S上で次のようになります(とそれよりも広いもの):我々は唯一の320まで、私たちの幅を広げる:あなたが推測したよう

enter image description here

+0

'leadingMargin'はスーパービューの左端と同じではないことに注意してください。もしhtafoyaが正確に20ポイントのマージンを望むならば、その制約は単に 'leading'を使うために変更する必要があります。 –

+0

@robmayoff同意。私は、彼がマージンについて何を意味しているのかよく分かりませんでした。彼のスクリーンショットでは、彼はスーパービューのマージンに固定されています。しかし、私は彼が最終的に何を意味するのかを理解するかどうかは分かりません。私の答えの要点は、必要な_concepts_を説明することですが、正確な数字をじゃまにすることはもちろん、OPまでです。 – matt

+0

私はあなたと同じ制約を課しましたが、マージンは常に20だったので、iPadに拡大したとき、ビューは、両側の20ポイントをすべて満たすように拡大しました。 Paulw11は、私が探している制約を与えます。 – htafoya

関連する問題