查找矩形内的子视图

时间:2011-10-06 07:00:19

标签: iphone ios uiview subview

我有一个很大的UIView,有很多小subviews。我需要找到一个区域内的所有subviews。我目前正在迭代subviews并使用CGRectContainsPoint。这有效,但90%的子视图通常不在我感兴趣的矩形范围内。

是否有更有效的方法来查找矩形内的所有subviews

由于

2 个答案:

答案 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) }
}