8

デバイス上で正しくレイアウトされていないウィジェットがあります ( IB では問題ないように見えますが、正しくはありません)。ウィジェットはラベルで、画面のほぼ中央にあります。Interface Builder は、'Bottom Anchor' を使用して垂直スペースの制約を与えました。ここで、bottom は画面の下部を意味します (下のウィジェットや上部画面へのアンカーではありません)。

インスペクタを表示していますが、トップ アンカー (できれば上のウィジェット) に変更する方法がわかりません。特にApple のドキュメントEditing Constraintsを読んでみましたが、紛らわしく、変更方法が説明されていませんでした (または、7 文の議論を見逃していました)。

以下は、画面の下部に固定された垂直スペース制約を示す Interface Builder の下のスクリーン キャプチャです。そして、その属性には多くの要望が残されています - Equal、Constant、および Priority は実際には役に立ちません。

ここに画像の説明を入力

制約を編集する方法を知っている人はいますか? 具体的には、(1) 垂直スペーサーのアンカーを下から上に変更したい。(2) 画面の上部ではなく、上部のウィジェットに対してアンカーします。

4

2 に答える 2

32

Select the "Embedded" and the "Calculated" element together by shift-clicking.

With those two elements selected, use the constraints menu:

enter image description here

This menu, together with careful selection of elements, is central to happy editing of constraints in IB. In your case, choose the central item, the Pin menu. Choose Vertical Spacing - this will create a new constraint on vertical spacing between your two elements. Alternatively, select a single element and pin "Top space to superview" to pin to the top instead of the bottom.

You can now select and delete the vertical spacing to the bottom of the view. IB wouldn't let you delete this before since you have to have a complete, non-ambiguous set of constraints. After adding your new vertical spacing constraint, you now have this.

To illustrate further, here is an empty view controller, with a single text field which I have dragged on:

enter image description here

All of the constraints are purple, which means IB has added them for me (they are System constraints) and they can't be removed - they are the minimum constraints needed to position and size the text field.

Now, I'll select the text field, and pin the top space to the superview:

enter image description here

Now you can see that the two vertical space constraints have changed to blue (they are now user constraints) and they have a thicker appearance in the editor. This means that one of them can be deleted. I select the constraint for the bottom space and hit delete:

enter image description here

Note that this still has the appearance of a user constraint - but if I try to delete it, IB will automatically recreate the system constraint pinning to the bottom of the superview, getting us back to square one.

I have written about this, and similar autolayout topics, here.

于 2013-01-01T08:34:32.760 に答える