2

小さな (30X30 サイズ) UIView のグリッドがあり、以下のコードを使用して、画面上の 2 点を始点と終点としてタップして、それらの上に線を引いています。

CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGFloat components[] = {244.0f/255.0f, 226.0f/255.0f, 119.0f/255.0f, 0.8};
CGColorRef color = CGColorCreate(colorspace, components);
CGContextSetStrokeColorWithColor(context, color);
CGContextSetLineWidth(context, 20.0);
CGContextMoveToPoint(context, startPoint.x, startPoint.y);
CGContextAddLineToPoint(context, endPoint.x, endPoint.y);
CGContextStrokePath(context);
CGColorSpaceRelease(colorspace);
CGColorRelease(color);

画面上の 2 点をタップして線を引くことは正常に機能しますが、すべてのビューを線と交差させるにはどうすればよいですか? これらのビューを touches ended メソッドで取得したいと考えています。

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  CGPoint pt = [[touches anyObject] locationInView:alphabetView];
  UIView *touched = [alphabetView hitTest:pt withEvent:event];
  CGPoint p = touched.center;
  // code here to get view list.
}

どんな助けでも大歓迎です。

4

2 に答える 2

0

を使用して、行のパスにあるCGContextPathContainsPoint()かどうかを確認できます。ブール値が返されます。CGPointそのリファレンスはここにあります

于 2013-04-17T06:19:44.560 に答える