我有一个小的(30X30大小)UIViews&我通过点击屏幕上的两个点作为起点和点,在他们上划一条线。端点使用以下代码:
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);
在屏幕上点击两个点&绘制线条工作正常,但如何获得该线相交的所有视图? 我想在触摸结束方法中获得这些视图。
- (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.
}
任何帮助都将不胜感激。
答案 0 :(得分:1)
如果出现以下情况,则线段(从A点到B点)与矩形(视图框)相交:
如果(1)和(2)的答案都是“否”,则线段不与...相交 矩形。
来自this answer的checkLineIntersection
函数可能
有助于检查条件(1)。
CGRectContainsPoint()
可用于检查条件(2)。
答案 1 :(得分:0)
您可以使用CGContextPathContainsPoint()
检查您的CGPoint
是否在您的行的路径中,它返回一个布尔值。可以找到它的参考here