0

特定の位置にイメージビューがあります。その位置はわかっていますが、その位置にイメージビューがあるかどうかを確認したいと思います。

解決するのを手伝ってください

4

4 に答える 4

3

2 つの四角形が重なっているかどうかを確認するヘルパー メソッドを次に示します。

-(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...
        }
    }
于 2012-04-21T05:55:19.907 に答える
0

このアプローチも使用できます。

ImageViewの位置があると言ったので、これをCGRect変数に保存します。これを試してください

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

これにより、 imageView が返されます。次に、必要に応じて、以前に保存した位置または可視性でフレームを確認できます。

于 2012-04-20T04:38:24.030 に答える
0

for ループでその UIImageView のスーパービューのサブビューをナビゲートできます。そして、各ビューの位置をその特定の UIImageView の位置と比較します。

しかし、これは私には悪いように聞こえます。問題について詳しく教えていただければ、より良いサポートができるかもしれません。

于 2012-04-19T14:20:31.170 に答える