koo*_*koo 123

让我们scrollView成为一个例子UIScrollView.

在Objective-C中,它非常简单.只需打电话makeObjectsPerformSelector:,如下:

Objective-C的:

[scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
Run Code Online (Sandbox Code Playgroud)

在Swift中,您没有获得该运行时访问权限,因此您必须自己实际处理迭代.

迅速:

一个简洁的版本,从这里:

scrollview.subviews.map { $0.removeFromSuperview() }
Run Code Online (Sandbox Code Playgroud)

一种更具描述性的方法(从这里开始)假设scrollview.subviews:

let subviews = self.scrollView.subviews
for subview in subviews{
    subview.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)

  • 如果将滚动指示器设置为显示,则会删除它们,但OP不关注它们,如下面的注释中所述. (3认同)
  • 您应该使用 forEach 而不是 map,因为 map 返回一个数组。 (2认同)

Ric*_*llo 34

我想你只需要小心,不要删除滚动指示条.

Adam Ko给出的代码简洁而优雅,但它可能会删除水平和垂直滚动指示器.

我经常这样做

for (UIView *v in scrollView.subviews) {
  if (![v isKindOfClass:[UIImageView class]]) {
    [v removeFromSuperview];
  }
}
Run Code Online (Sandbox Code Playgroud)

假设您没有手动将UIImageView添加到滚动中.

  • 实际上我认为这不是一个好的解决方案,因为如果你想删除UIImageView子视图怎么办? (5认同)