4

ビューの特定の変更に基づいてすべてのフィールドを強制的に再レイアウトするために、コードから uiview の制約を無効にしたいと考えています。

たとえば、固定の VerticalSpace 制約が与えられた 2 つの UILabels があるとします。そして、いくつかのユーザーイベントでは、一番上にあるラベルのサイズを変更しています。制約を強制的にコードから無効にできるようにしたいと考えています。

制約を使用するのはこれが初めてで、コードからこれを行う方法がわかりません。デバイスが回転すると、UIView の制約が無効になることを知っています。

4

1 に答える 1

6

setNeedsLayout関連するビュー、通常はビューコントローラのを呼び出します.view。:

[self.view setNeedsLayout];

制約を実際に無効にしているわけではありません。これは、他の変更に基づいて制約を削除して再計算する必要があるカスタムビューに使用されるわずかに異なるものです。あなたがしていることは、レイアウトの計算に使用されたいくつかの要素が変更されたことをビューに通知することです。制約は引き続き有効ですが、結果は変更されています。

新しいレイアウトにアニメーション化するにはlayoutIfNeeded、アニメーションブロック内を呼び出すことができます。

于 2012-12-15T08:31:11.453 に答える