n 個のサブビューを持つ UIView があります。n を 600 サブビューとします。次のコードですべてのサブビューを非表示にする方法があることを知っています
for (UIView *subView in mainView.subviews) {
subView.hidden = YES;
}
しかし、すべてのサブビューを非表示にする他の適切な方法または API はありますか。事前に感謝します。
n 個のサブビューを持つ UIView があります。n を 600 サブビューとします。次のコードですべてのサブビューを非表示にする方法があることを知っています
for (UIView *subView in mainView.subviews) {
subView.hidden = YES;
}
しかし、すべてのサブビューを非表示にする他の適切な方法または API はありますか。事前に感謝します。
Objective-C (KVC)
[mainView.subviews setValue:@YES forKeyPath:@"hidden"];
迅速:
mainView.subviews.forEach { $0.isHidden = true }
for ループを作成せずに 600 個のサブビューをすべて非表示にする場合は、別の簡単な方法もあると思います。UIViewの隠しプロパティのドキュメントを見てください。それは言います:
非表示のビューはウィンドウから消え、入力イベントを受け取りません。ただし、スーパービューのサブビューのリストに残り、通常どおり自動サイズ変更に参加します。サブビューを含むビューを非表示にすると、それらのサブビューとそれらが持つ可能性のあるビューの子孫を非表示にする効果があります。この効果は暗黙的であり、受信者の子孫の非表示状態を変更しません。
したがって、UIView (containerView と呼びましょう) を作成し、それを mainView のサブビューにします。次に、600 個のサブビューをすべて取得し、mainView ではなく、containerView のサブビューにします。600 個のサブビューすべて (および containerView) を 1 行で非表示にできるようになりました。
mainView.containerView.hidden=YES;
もちろん、mainView は引き続き表示されます。