我有一个很大的UIView
,有很多小subviews
。我需要找到一个区域内的所有subviews
。我目前正在迭代subviews
并使用CGRectContainsPoint
。这有效,但90%的子视图通常不在我感兴趣的矩形范围内。
是否有更有效的方法来查找矩形内的所有subviews
?
由于
答案 0 :(得分:2)
CGRectContainsRect
会更合适。您仍然需要根据您对其位置的假设来循环遍历矩形中的所有子视图,但CGRectContainsRect
仍然比CGRectContainsPoint
更有意义。
CGRect area = CGRectMake(10,10,200,200);
NSMutableArray *viewsWithinArea = [[NSMutableArray alloc] init];
for (UIView *aView in [self.view subviews]) {
if(CGRectContainsRect(area,aView.frame)) [views addObject:aView];
}
答案 1 :(得分:0)
@james_womack Swift 的答案:
func subviewsWithin(area: CGRect) -> [UIView] {
return subviews.filter { area.contains($0.frame) }
}