2

こんにちは私は、スクリーンショットに示すように、AutoLayout constriantsを使用して2行のボタンを表示し、各行に3つのボタンを表示するXIBを設計しました(満足のいくレイアウトが得られたら、ボタンを赤いUIViewに配置します)。

ポートレートモードの自動レイアウト

これまでのところ、上に示したポートレートモードでは、ボタンは問題なく表示されます。ただし、回転してヘッダー(青色)と親ビュー(灰色)のサイズを変更して正しく表示すると、赤いボタンのビューが消えます(以下を参照)。

ここに画像の説明を入力してください

これを正しく機能させるために制約を設定するための最良の方法は何ですか?私はRayWenderlichチュートリアルに従い、彼の例で使用したものと同じEditor \ Pin]VerticalSpacingおよびEditor\Pin\Horizo​​ntal間隔を使用しました 。RayWenderlichチュートリアル

また、次のような多くの制約エラーが発生します。

        Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x859abe0 UIView:0x85a8fb0.height == UIView:0x85a8e60.height>",
    "<NSLayoutConstraint:0x859ab60 V:[UIView:0x85a8fb0]-(114)-|   (Names: '|':UIView:0x85a8170 )>",
    "<NSLayoutConstraint:0x859ab20 V:|-(424)-[UIView:0x85a8fb0]   (Names: '|':UIView:0x85a8170 )>",
    "<NSLayoutConstraint:0x85a3430 V:|-(150)-[UIView:0x85a8170]   (Names: '|':UIView:0x85a8da0 )>",
    "<NSLayoutConstraint:0x85a33b0 V:[UIView:0x85a8170]-(NSSpace(20))-|   (Names: '|':UIView:0x85a8da0 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x75ac610 h=--& v=--& V:[UIView:0x85a8da0(704)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x859ab60 V:[UIView:0x85a8fb0]-(114)-|   (Names: '|':UIView:0x85a8170 )>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

私はこれで終わりですので、このエルダイトグループからの助けをいただければ幸いです...!

4

1 に答える 1

2

エラーは、競合する制約があることを意味します。1行で機能するようにしてください。

  1. 垂直方向の間隔で各赤いボックスを青いヘッダーボックスに固定します
  2. 左側の赤いボックスを先頭のスペースで固定して、スーパービューを表示します
  3. 後続のスペースが表示される右側の赤いボックスを固定します
  4. 中央の赤いボックスの左右に水平方向の間隔を設定します
  5. 高さを固定する
  6. 3つの赤いボックスをすべて選択し、同じ幅になるように設定します(同じ幅)
  7. IBによって追加された無関係な制約を削除します
  8. デバイスでテストします。(私は風景/ポートレートをシミュレートしています)インターフェイスビルダーで制約が変更されることがあります。9添付画像のようになりますここに画像の説明を入力してください
于 2013-02-20T22:40:01.893 に答える