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)一方が他方と重なったことをどのように検出できますか?
私はこの解決策を見ました:
if (CGRectContainsRect([myImageView1 frame], [myImageView2 frame])) {
NSLog(@"Overlaped, it's working!");
}
しかし、私が複数の を持っている場合UIViews
、 を実行してfor
すべてのsuper view
サブビューをチェックすることは、私にとって良い解決策ではないようです。
2) この場合、どうすればよいでしょうか?
私の主な目標は、これがいつ発生するかを検出することです。
アップデート 1.0
よりエレガントな方法がないため、ここに示されていることを試してみましょう。私がそれを達成できれば、誰かがそれを必要とするなら、コードを Github に投稿します。