Найти подпредставления в прямоугольнике - PullRequest
1 голос
/ 06 октября 2011

У меня большой UIView со многими маленькими subviews.Мне нужно найти все subviews в пределах области.В настоящее время я перебираю subviews и использую CGRectContainsPoint.Это работает, но 90% подпредставлений обычно не входят в мой интересующий прямоугольник.

Есть ли более эффективный способ найти все subviews в прямоугольнике?

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

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];
}
0 голосов
/ 22 июля 2016

@ james_womack ответ в Swift :

func subviewsWithin(area: CGRect) -> [UIView] {
    return subviews.filter { area.contains($0.frame) }
}
...