我正在自定義UIView
中創建多個自定義UIView's
。自定義子視圖的創建是可以的。他們是這樣的:多個UIView的重疊
Draw方法非常簡單:
[[UIColor brownColor] set];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(ctx,
5.0f);
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, 0.0f, 0.0f);
CGContextAddLineToPoint(ctx, 100.0f, 0.0);
CGContextAddLineToPoint(ctx, 130.0f, 25.0f);
CGContextAddLineToPoint(ctx, 100.0f, 50.0f);
CGContextAddLineToPoint(ctx, 0.0f, 50.0f);
CGContextClosePath(ctx);
CGContextStrokePath(ctx);
[super drawRect:rect];
它添加到超級視圖也非常簡單:
ITContextFigure *view = [[ITContextFigure alloc] initWithFrame:CGRectMake(location.x, location.y, 135.0f, 50.0f)];
[view setBackgroundColor:[UIColor yellowColor]];
[self addSubview:view];
所以我的問題是:
1)Ho我可以檢測到一個與另一個重疊嗎?
我看到這個解決方案:
if (CGRectContainsRect([myImageView1 frame], [myImageView2 frame])) {
NSLog(@"Overlaped, it's working!");
}
但是,如果我有多個UIViews
,做對super view
一個for
和檢查每一個單個子視圖似乎並沒有很好的解決方案給我。
2)在這種情況下,可以做些什麼?
我的主要目標是檢測當這種情況發生:
更新1.0
打算嘗試什麼已經顯示爲here,因爲沒有更優雅的方式。如果我能夠實現它,我會在Github上發佈代碼,如果有人需要的話。
我想你可能想要搜索算法來檢測相交多邊形(這涉及每對線段和線段相交的蠻力)。 – nhahtdh 2012-07-13 15:12:13
我猜你在2)的情況是邊界矩形重疊,但視圖的主要內容不? – 2012-07-13 15:12:25
@nhahtdh不總是一個蠻力,你可以做分離軸定理檢測任意(凸)多邊形上的交點 – 2012-07-13 15:13:16