检测不同超视图下两个UIView对象的交集

Mat*_*der 8 uiview ios

检测到UIView物体的交叉点时遇到了问题.

这就是我在下面使用的:

对于交叉点两个对象,我需要弄清楚如何将一个坐标系从第一个超视图转换到另一个坐标系.

我用过这种方法:- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view这里描述链接.

据我所知,使用这种方法非常简单.但是在不同的情况下,由于文档中的一些描述很难(但可能仅适合我).

这是我的子视图结构,如下图所示.我已经有了拖放对象的所有方法.但我需要弄清楚如何获得UIView AUIView B的交叉点.感谢帮助.

在此输入图像描述

Mat*_*der 5

我已实现此解决方案:

- (void)putComponent:(NSNotification *)notif {
    // Catch B UIView.
    UIView *view = [notif object];
    // Convertation. [self superview] - is view wher A UIView is placed.
    CGRect convertedRect = [[self superview] convertRect:view.frame fromView:[view superview]];
    // Find center point.
    CGPoint point;
    point.x = convertedRect.origin.x + (convertedRect.size.width / 2.0f);
    point.y = convertedRect.origin.y + (convertedRect.size.height / 2.0f);
    // Find if CGRect (self.frame) contains a point (center of B UIView)
    BOOL contains = CGRectContainsPoint(self.frame, point);
    if (contains) {
        NSLog(@"intersect here");
    }
}
Run Code Online (Sandbox Code Playgroud)