12

2 つのラベルを水平方向の中央に配置する必要があるという非常に単純な要件があります。そのため、それらを選択し、Editor->align->center Horizo​​ntal を選択しました。次に、両方のコンテナー制約に上部スペースを追加しました。また、コンテンツのサイズに合わせてラベルを縮小/拡大する必要があります。ただし、IB にはエラーといくつかの警告が表示されます。ラベルの間にピン (水平スペース) を追加するだけでラベルを縮小/拡大できますが、その場合は中央に配置されません。スクリーンショットは次のとおりです。

ここに画像の説明を入力

エラーと警告は次のとおりです。

ここに画像の説明を入力

UPDATE theraven は、ダミー ビューを使用して水平方向の中央に配置し、2 つのラベルをピン留めするという興味深い提案を行いました。既存の制約をすべて削除し、このダミー ビューと中心 X + 中心 Y の制約を追加しました。次に、2 つのラベルをピン留めしました (水平スペースの制約を追加しました)。ただし、まだ多くのエラーと警告が表示されます。

ここに画像の説明を入力 ここに画像の説明を入力

UPDATE2質問を更新するだけですが、まだ有効な回答が見つかりません。@Theraven の回避策は iPhone4、iPhone4S、iPhone5、および iPhone5S で機能しますが、実際のセンタリングではなく回避策です。したがって、iPhone6 および iPhone6 Plus では、先頭と末尾のスペースが固定され、幅を大きくするために自動的にサイズ変更されないため、機能しません。

4

6 に答える 6

1

審美性のためだけに別のビューを追加するという考えは本当に好きではありません。

もう 1 つの方法は、左側のビューを水平方向に中央に配置し、amout X の右側のビューを左側のビューと水平方向に間隔を空けることです。

次に、最初のビューの水平方向の制約に、最初のビューの幅にビュー距離の半分を加えた値に等しい負の値を指定します。または、前のコメントで述べたように乗数を使用します。

しかし、これは私が推測する固定幅のビューでのみ機能します。

于 2015-03-17T12:39:25.557 に答える
1

UIStackView間隔が必要な 2 つのラベルのコンテナーとして中央揃えを使用します。

于 2016-05-05T03:12:07.840 に答える
0

I didn't really understand what you wish to do.

The error you get (in the first screen shot) is that you are missing constraint for the x position of the labels.

For UILabel you must have constraint both for y and for x position regarding to the container view, when you selected them both and chose Editor->align->center horizontally, you just say that label1.center.x = label2.center.x. You still need to say where they will be in the container view, you added the top space to container, so you do have the y position, but you didn't say where the x position should be.

You said

I have pretty straightforward requirements where two labels must be centered horizontally

But where they should be in respect to their container?

thanks

于 2014-11-22T14:29:08.247 に答える
0

スペーサー ビューを使用することは、開発者にとって見苦しく見えますが、私が理解できる最善の解決策です。ユーザーは舞台裏で何が起こっているのかさえ知りませんし、スペーサーUIViewを取得したら、いつでも再利用できます。

于 2015-08-12T16:13:21.457 に答える