web-dev-qa-db-ja.com

iPhone 6Plusでの自動レイアウトの予期しない結果

ビューコントローラ(VC)にuiviewを追加しましたが、その幅をVCのビューの幅と等しくなるように設定しようとしています。

私が設定して期待したこと: xcode setting and expected result

そして私がiphone6 plusで得たもの: what i got on ip6+

先行スペースと後続スペースの定数を変更しようとしましたが、役に立ちませんでした。 iPhone 6+の自動レイアウトに特別なものはありますか?

ここでのビュー設定は「任意の幅x通常の高さ」です。

------- 2016年12月に追加私のようなこのケースで混乱している人へ:UIViewには レイアウトマージン プロパティがあります。これはUIEdgeInsets(8,8,8,8)です。 。それはcssパディングのようなものです。

ビューのエッジがスーパービューのエッジに近く、preservesSuperviewLayoutMarginsプロパティがtrueの場合、コンテンツがスーパービューのマージンと重ならないように、実際のレイアウトマージンを増やすことができます。

デフォルトのマージンは、各側で8ポイントです。

ビューがビューコントローラのルートビューである場合、システムはマージンを設定および管理します。上マージンと下マージンはゼロポイントに設定されます。サイドマージンは現在のサイズクラスによって異なりますが、16ポイントまたは20ポイントのいずれかになります。これらのマージンを変更することはできません。

27
Horst

制約を追加するときは、[マージンに制約]チェックボックスを削除してみてください。ここで見てみましょう:

マージンへの制約がチェックされ、その結果

Constrain to marginsresult

ここで、制約を削除し、[制約]をオンにして制約を余白に再度追加した後、結果は次のようになります。

Constrain to margins uncheckedresult without Constrain to margins

53

シャロンの答えは素晴らしく機能しますが、問題を解決するために既存の制約を削除する必要はありません。既存の制約を編集して、余分なマージンを削除できます。

Before applying solutionSolution stepAfter applying solution

19
pimguilherme

既存の制約を編集して余分なマージンを削除しても機能しません。既存の制約を削除し、マージンの制約を選択せず​​に新しい制約を追加する必要があります。

0
bhoomi

「完了」ボタンでも同じ問題が発生しました。問題は、ビュー([完了]ボタン)がベースビュー階層にあったため、ビューをルートビュー(ビューコントローラーのビュー)に戻すことでした。それに応じて制約を設定します。

私の場合、制約を設定しますピン->マージンへの制約のチェックを外します->ボトム、リーディング、トレーリング(制約値= 0)

enter image description here

ビュー階層が次のようになっていないことを確認してください(サブビューは次のようになりますが、カットビューは次のようになりません)。

enter image description here

0
Avijit Nagare