web-dev-qa-db-ja.com

iOS Autolayout:同じ幅の2つのボタンが並んでいます

現在、AutoLayoutに問題があります。インターフェイスビルダーを使用して、次の図に示すように、幅が等しい2つのボタンを並べて配置しようとしています。

objective layout

次のプレビュー画像から、titleImageは適切に制限されており、ボタンは正しく表示されていません。 button1をtitleImageのリーディングエッジに、button2をtitleImageのトレーリングエッジに合わせて実験しましたが、以下に示すように、この時点で2つのボタン間の幅分布は歪んでいます。

problem scenario

私の目的は、どの制約が欠落しているかを理解し、デバイスに関係なく同じ幅を維持するために2つのボタンに適用する必要があることです。可能であれば、追加のコードではなく、インターフェイスビルダーを通じてこれを実現したいと思います。

87
Scratcha

次の制約を追加します

  1. Button1からbutton2に等しい幅を割り当てます。
  2. 両方のボタンの間に水平間隔を割り当てます。
  3. Button1からそのスーパービューに先行スペースを割り当てます。
  4. Button2からそのスーパービューに後続スペースを割り当てます。
  5. 両方のボタンに上部スペースを割り当てます。
    それがあなたのために働くかどうか教えてください。
239
Abubakr Dar

手順とスクリーンショットに従って、簡単に解決してください


ステップ-1)

  • ボタン1の場合:制約を設定:(1)先頭、(2)必要に応じて上部または下部、(3)高さ


ステップ2)

  • ボタン2の場合:制約を設定:(1)トレーリング、(2)必要に応じて上部または下部、(3)高さ -

ステップ-3)

  • Ctrlキーを押しながらボタン1からボタン2にドラッグ

  • Horizo​​ntal Spacingを選択します


ステップ-4)

  • 両方のボタンを選択し(コマンドを使用)、制約を追加等しい幅


出力

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

72
Vvk

IOS9のスタックレイアウトは、本当に素晴らしい仕事をします。スタックビューをビューに追加し、次のように構成します。

enter image description here

18
Ben

あなたは私の例を確認することができます-あなたは比例制約を使用することで、これを簡単に狙うことができます。また、比例した複数のUIViewを簡単に狙うことができます。添付例をご覧ください

https://dl.dropboxusercontent.com/u/48223929/TestViewController.xib

2

私の解決策は

  1. 2つのボタンの中央に小さなビューを配置し、中央に配置します(コンテナの水平方向の中心とコンテナの垂直方向の中心を0にします)。
  2. 小さなビューに高さと幅を追加します。
  3. 制約にボタンを追加し、小さなビューに水平スペースの制約を与えます。
  4. ボタンまたはビューの色と同じ小さなビューの背景色を指定します。

注:スクリーンショットを参照してください。

enter image description here

0
A.G