UIView 并没有提供移除所有 subview 的方法。需要我们遍历 subview, 并逐一调用其 removeFromSuperview() 方法。 但这并不意味着需要写出冗长的 for 循环。
Objective-C 的数组对象和 Swift 的数组结构体,都为我们提供了遍历内部元素的方法。我们可以使用这些方法来缩短代码篇幅。
比如移除 someUIView 对象的所有 subview:
Swift1someUIView.subviews.forEach({ $0.removeFromSuperview() })
Objective-C1[[someUIView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
在需要频繁使用到移除所有 subview 功能的情况下,不妨拓展 UIView 的方法:
Swift12345extension UIView { func removeAllSubviews() { subviews.forEach({ $0.removeFromSuperview() }) }}
移除移除所有 subview 时这么使用:
Swift1someUIView. removeAllSubviews()
(Objective-C 示例省略)