5

メールアプリに似たビューがあります。私はスクロールビューを持っており、他の多くのサブビューにあります。ユーザーが任意のテキストビューをクリックすると、展開されてテキストが表示されます。たとえば、メールの「to」フィールド。展開された領域の下から始まるように、他のサブビューのサイズを変更したいと思います。どうやってやるの。

IB を使用してビューを作成し、これを容易にするために柔軟な上部マージンをマークしました。しかし、自動的には何も起こらないので、sizethatFits/setneedsLayout を呼び出す必要があるかどうか疑問に思っていました。

4

1 に答える 1

7

サブビューのサイズが変更されたら、 を呼び出します[[self superview] setNeedsLayout]。スーパービューで-layoutSubviews、実際のレイアウトを行うために実装します。すべてを自分で計算する必要があります。固定/柔軟なマージンは、ピア ビューではなく、スーパービューのサイズ変更に関連しています。デフォルトで-layoutSubviewsは何もしません。適切なタイミングで呼び出されるだけです。

特定のポイントで強制的にレイアウトを行う必要がある場合は-layoutIfNeeded、自分自身または自分のスーパービューを呼び出すことができます。この方法がどのように機能するかについては、ドキュメントを参照してください。ただし、一般的に言えば、これを呼び出す必要はありません。を使用するだけであれば、通常は適切なタイミングで呼び出されます-setNeedsLayout

于 2009-10-03T15:30:51.790 に答える