28

Cocoa Auto Layout に問題があり、この問題を回避できません。私が達成したいのは、以下に示すように、ビューの中央に常に 2 つのボタンを配置することだけです。

ここに画像の説明を入力

私は成功せずにさまざまなアプローチをたくさん試しました:(ここで私を助けてください。

4

7 に答える 7

10

Auto Layout の巧妙なトリックは、目に見えないビューをスペーサーとして使用することです。制約システムは、通常どおりそれらをレイアウトします。この場合、2 つのボタンの間のスペースは非表示のビューになる可能性があります。次の制約文字列の制約を使用できます。

@"[button][invisibleView(5)][button2(==button)]"

次に、拘束設定を作成しますinvisibleView.centerX = superview.centerX

于 2013-03-23T20:14:20.037 に答える
6

Another trick to do this is to align the right side of button to be half the size of the space away from the Center of superview, and the left side of button2 to be half the size of the space away from the Center of superview.

This only really works if you have a superview that only surrounds the two views you want to centre though.

于 2013-03-25T15:09:13.413 に答える
4

固定幅のボタンがあり、2 つの間の固定距離が必要な場合は、次の手順で作業できます。

  1. Width値の例にとHeight constraintを追加button1: 高さ 100、幅 100。
  2. 両方のボタンを選択し、 と を追加constraint Equal WidthsEqual Heightsます。
  3. Horizontal Spacingとの間button1に追加しbutton2ます。Leading Spaceまたは、 add to button2fromと言うことができますbutton1。例の値: 150
  4. -125 の値を選択button1して追加します。constraint Horizontally in Container
  5. constrains必要に応じて他のようなものを追加Vertical Spacing to Containerします。

例の値 125 は ( button1 width/ 2) + ( Horizontal Spacing/2) に等しく、100/2 + 150/2 = 125 です。

したがってHorizontal in Container、-125 を追加するとbuttonsが左に移動し、このレイアウトが画面の中央になります。

以下に添付されたレイアウトと制約の画像の例:レイアウト例

button1 の制約

于 2016-07-29T11:15:52.517 に答える
1

以下の方法でも実現できます。

1.左ボタンの先頭スペース、右ボタンの末尾スペースを取ります。
2.先行制約と後続制約の両方のアウトレットを構築します。

 __weak IBOutlet NSLayoutConstraint *leadingConstraint;
 __weak IBOutlet NSLayoutConstraint *trailingConstraint;

3.以下の式で定数を計算します。

NSInteger constant = (SCREEN_WIDTH - (CGRectGetWidth(leftButton.frame) + CGRectGetWidth(rightButton.frame))) / 3;
    leadingConstraint.constant = constant;
    trailingConstraint.constant = constant;

それがあなたを助けることを願っています。

于 2016-02-23T11:59:12.980 に答える
1

基本的に、私は常に中央に配置し、同じ幅にする必要がある下に2つ配置していますUIButtonsUITableViewCellこれは、Xcode 7.2 で動作させる方法です。ちなみに、それが何らかの形で関連している場合、私はSwiftを使用しています。

  1. 左のボタンでは、先頭下の制約を与えました
  2. 右のボタンでは、末尾下部の制約を与えました
  3. 右ボタンでは、左ボタンに先行スペースを与えました
  4. 最後に、右のボタンで、左のボタンに等幅の制約を与えました。
  5. 終わり。
于 2015-12-18T10:35:41.493 に答える
-1

素晴らしいヒント。私の場合、ボタンをビューの中心から 10 ピクセル離れた位置に配置したかったので、計算が少し異なります

leadingConstraint.constant = (self.frame.size.width / 2.0) + 5.0;
trailingConstraint.constant = (self.frame.size.width / 2.0) + 5.0;
于 2016-03-03T22:21:47.337 に答える