5

3 つのラベルを含むビューがあります。

最初のラベルは最上部に配置されます。3 番目のラベルは、下から 50px に配置されます。

私がやろうとしているのは、常にオートレイアウトを使用して2番目のラベルを2つの中央に配置することですが、その方法がわかりません。

問題は、2 番目のラベルがビューの中心にないことです。

2 つの垂直間隔の制約を初期値以下に設定しようとしましたが、うまくいきませんでした。

自動レイアウトのみを使用してそれを行うことは可能ですか? 別のビューを追加することを考えましたが、それは良い解決策とは思えません..

ありがとうございました。

4

2 に答える 2

1

自動レイアウトでこれを行うことはできないと思います。ただし、オーバーライドしてlayoutSubviews(またはサブクラスviewDidLayoutSubviewsを使用していない場合UIView)、ラベル 2 をラベル 1 とラベル 3 の間の中央に配置するのは簡単です (必ず[super layoutSubviews]最初に呼び出してください)。

編集: ここにいくつかのサンプル コードがあります。

- (void)layoutSubviews {
    [super layoutSubviews];

    _label2.center = CGPointMake(_label2.center.x, (CGRectGetMaxY(_label1.frame) + CGRectGetMinY(_label3.frame)) / 2);
}
于 2013-03-17T21:23:52.233 に答える
0

私の他の答えは間違っていたと思います。NSViewこれを行う最も簡単な方法は、ラベルを保持する を作成し、2 番目のラベルをその中央に設定することだと思います。私の以前の回答では、Autolayout システムがビュー間でスペースを分割する必要がある場合、均等に分割すると想定していましたが、いくつかの簡単なテストでは、そうではないことが示されています。

Autolayout では、現時点では、特定のスペースが別のスペースと同等であるべきだとは言えません。

于 2013-03-17T22:26:27.933 に答える