如何检查UIImageView存在于iphone中的视图位置

时间:2012-04-19 14:17:13

标签: iphone ios uiimageview

我在特定位置有一个imageview,我知道位置,但我想检查该位置是否有imageview。

请帮我解决

4 个答案:

答案 0 :(得分:3)

这是一个帮助方法来检查两个rects是否重叠:

-(BOOL) rect:(CGRect)rect overlap:(CGRect)anotherRect
{
    BOOL xOverlap = ((rect.origin.x >= anotherRect.origin.x) && (rect.origin.x <= anotherRect.origin.x + anotherRect.size.width)) ||
                    ((anotherRect.origin.x >= rect.origin.x) && (anotherRect.origin.x <= rect.origin.x + rect.size.width));

    BOOL yOverlap = ((rect.origin.y >= anotherRect.origin.y) && (rect.origin.y <= anotherRect.origin.y + anotherRect.size.height)) ||
                    ((anotherRect.origin.y >= rect.origin.y) && (anotherRect.origin.y <= rect.origin.y + rect.size.height));

    return xOverlap && yOverlap;
}

用法:
您可以迭代视图的所有子视图,并检查视图的框架是否与另一个视图的框架重叠。假设你有一个myView属性:

for(UIView *v in self.view.subviews)
    {
        if(v == self.myView) //skip the same view
            continue;

        if([self rect:self.myView.frame overlap:v.frame])
        {
            //Do something...
        }
    }

答案 1 :(得分:1)

首先,您可以在主视图中获得所有视图的数组:

NSArray *subviews = [view subviews];

然后,对于每个视图,您都可以检查每个视图的框架:

for (int i = 0 ; i < [subviews count]; i++){
    CGRect frame = [subviews objectAtIndex:i].frame;
}

答案 2 :(得分:0)

您可以在for循环中浏览该UIImageView的超级视图的子视图。并将每个视图的位置与特定UIImageView的位置进行比较。

但这对我来说听起来很糟糕。也许如果你能详细说明这个问题,我们可以提供更好的帮助。

答案 3 :(得分:0)

你也可以使用这种方法:

既然你已经说过你有ImageView的位置,那就把它保存在一些CGRect变量中。试试这个

UIImageView *yourImgView = (UIImageView *)[view subviews];

这将返回您的imageView。然后,您可以根据需要检查其早期保存位置或其可见性的框架。