gpt4 book ai didi

ios - 获取与一条线相交的所有 View IOS

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:35 24 4
gpt4 key购买 nike

我有一个小的(30X30 大小)UIView 网格,我通过使用下面的代码点击屏幕上的两个点作为起点和终点在它们上面画一条线:

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);

点击屏幕上的两个点并画一条线可以正常工作,但如何让所有 View 都与该线相交?我想在 touches ended 方法中获得这些 View 。

- (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.
}

如有任何帮助,我们将不胜感激。

最佳答案

如果满足以下条件,则线段(从 A 点到 B 点)与矩形( View 框)相交:

  1. 线段与矩形的 4 个边中的任何一个相交,
  2. A点和B点都在矩形内。

如果 (1) 和 (2) 的答案都为否,则线段不与长方形。

函数 checkLineIntersection 来自 this answer可能有助于检查条件 (1)。

CGRectContainsPoint() 可用于检查条件 (2)。

关于ios - 获取与一条线相交的所有 View IOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16052696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com