0

私が達成したいこと:

Custom View 1
   aligned at the top
   fixed height = 20px
   width = window width

Horizontal Split View
   just below the custom view
   width = window width
   height = as large as possible

Custom View 2
   aligned at the bottom
   fixed height = 20px
   width = window width

これは非常に単純なレイアウトです。ウィンドウの上部と下部にヘッダーとフッターがあり、その間に分割されたビューがあり、ウィンドウのサイズに合わせてサイズが変更される左右のコンテンツがあります。しかし、Apple の Auto Layout Manager の設計は非常に貧弱で、私にはこれを機能させることができないようです。(私は今約3時間手探りでした!)

問題は次のとおりです。カスタム ビューの高さを固定するとすぐに、ウィンドウの高さがロックされ、縦方向のサイズを変更できなくなります。私は次の制約でこれをやろうとしています:

Custom View 1
    Constraints
    height = 20px

Custom View 2
    height = 20px

Constraints
    Leading horiz space from Custom View 1 to Superview = 0
    Leading horiz space from Custom View 2 to Superview = 0
    Leading horiz space from Split View to Superview = 0
    Trailing horiz space from Custom View 1 to Superview = 0
    Trailing horiz space from Custom View 2 to Superview = 0
    Trailing horiz space from Split View to Superview = 0

    Top vert space between Custom View 1 and Superview = 0
    Vert space between Custom View 1 and Split View = 0
    Vert space between Custom View 2 and Split View = 0
    Bottom vert space between Custom View 2 and Superview = 0
    Top vert space between Custom View 2 and Superview = 344px (!)

最後の行は Xcode によって追加され、削除できません。もちろん、これは固定された垂直レイアウトを担当しています。どうすればそれを取り除くことができますか?

4

2 に答える 2

2

わかりました、私はついにそれを理解しました。

IB の冗長な制約をそのままにしておく必要がありましたが、優先度を 1 にしました。IB は優先度を 1000 に設定し、常に私の制約をオーバーライドしていました。

于 2013-07-24T11:52:13.730 に答える
0

すべてのビューには、レイアウト システムが位置 (x と y) とサイズ (幅と高さ) を計算するのに十分な制約が必要です。これらのプロパティを計算するのに十分な情報がシステムにない場合、レイアウトはあいまいであると見なされます。Xcode の Interface Builder ではあいまいなレイアウトを作成できないため、完全に制約されたレイアウトを確保するために制約が追加されます。

あなたの情報に基づいて、subview2 は十分に制約されているようです。ただし、ビューの高さを制約として設定していない可能性があります。ビューに設定したフレームは、レイアウト システムによって無視されます。それはあいまいさをもたらすでしょう。subview2 に高さ制限を追加してみてください。

于 2013-07-24T11:00:27.637 に答える