ZhouJiatao's Blog

UIView如何移除所有subview

UIView 并没有提供移除所有 subview 的方法。需要我们遍历 subview, 并逐一调用其 removeFromSuperview() 方法。 但这并不意味着需要写出冗长的 for 循环。

Objective-C 的数组对象和 Swift 的数组结构体,都为我们提供了遍历内部元素的方法。我们可以使用这些方法来缩短代码篇幅。

比如移除 someUIView 对象的所有 subview:

Swift

1
someUIView.subviews.forEach({ $0.removeFromSuperview() })

Objective-C

1
[[someUIView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

在需要频繁使用到移除所有 subview 功能的情况下,不妨拓展 UIView 的方法:

Swift

1
2
3
4
5
extension UIView {
func removeAllSubviews() {
subviews.forEach({ $0.removeFromSuperview() })
}
}

移除移除所有 subview 时这么使用:

Swift

1
someUIView. removeAllSubviews()

(Objective-C 示例省略)