从UIScrollView中移除子视图

7

我需要从ScrollView中删除图像subviews,我尝试从subviewsarray中删除,但那是一个不可变的NSArray

如何从scrollviews arraysubviews中删除subview

6个回答

35
    NSArray *viewsToRemove = [scrollView subviews];
    for (UIView *v in viewsToRemove) [v removeFromSuperview];

2
这样做还会删除滚动指示器... 看来我们必须检查要删除的视图类型。 - Tim Autin

12

你可以这样做,

[[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];

5

这段代码会删除UIScrollView的所有子视图,但保留其滚动指示器:

_scrollView.showsHorizontalScrollIndicator =
_scrollView.showsVerticalScrollIndicator = NO;
[_scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
_scrollView.showsHorizontalScrollIndicator =
_scrollView.showsVerticalScrollIndicator = YES;

显然,[_scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];将删除所有UIScrollView子视图,包括其滚动指示器。在从scrollview中删除所有子视图之前隐藏滚动指示器将确保不会从scrollview中删除滚动指示器。 - calinb

2
for (UIView *v in [scrollView subviews]) {
    [v removeFromSuperview];       
}

1

在子视图上调用-removeFromSuperview。


1

Swift

for subview in scrollView.subviews {
    subview.removeFromSuperview()
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接