Pra*_*lan 14 iphone objective-c subview uiview
我有UIView,它有n个子视图.假设n为600个子视图.我知道有一种方法可以通过以下代码隐藏所有子视图
for (UIView *subView in mainView.subviews) {
subView.hidden = YES;
}
Run Code Online (Sandbox Code Playgroud)
但是有没有任何其他正确的方法或API来隐藏所有的子视图.谢谢提前.
rfr*_*lli 36
Objective-C(KVC)
[mainView.subviews setValue:@YES forKeyPath:@"hidden"];
Run Code Online (Sandbox Code Playgroud)
迅速:
mainView.subviews.forEach { $0.isHidden = true }
Run Code Online (Sandbox Code Playgroud)
小智 15
如果你想隐藏所有600个子视图而不创建for循环,我认为还有另一种简单的方法.查看UIView 隐藏属性的文档.它说:
隐藏视图从其窗口中消失,不会接收输入事件.但它仍保留在超级视图的子视图列表中,并像往常一样参与自动调整.使用子视图隐藏视图会隐藏这些子视图以及它们可能具有的任何视图后代.这种效果是隐含的,不会改变接收者后代的隐藏状态.
因此,创建一个UIView(让我们称之为containerView)并使其成为mainView的子视图.然后获取所有600个子视图,并将它们设为containerView的子视图,而不是mainView.您现在可以使用一个简单的行隐藏所有600个子视图(以及containerView):
mainView.containerView.hidden=YES;
Run Code Online (Sandbox Code Playgroud)
当然,您的mainView仍然可见.
| 归档时间: |
|
| 查看次数: |
12607 次 |
| 最近记录: |