gpt4 book ai didi

ios - 如何通过手势使路径中的特定点可拖动。 iPhone

转载 作者:行者123 更新时间:2023-11-29 04:15:55 25 4
gpt4 key购买 nike

我可以绘制一条路径并通过手势识别器使 View 可拖动。我如何在可拖动的路径上指出一个点。我想我需要识别该点以检查它在 View 中的位置并将其位置重置为拖动到的点,但这就是我不确定该怎么做。

最佳答案

兄弟,有用于检测 CGPathUIBezierPath 上的命中的函数。 ON touchesBegan:方法,您可以使用以下方法之一来检测击中点是否在路径上。

对于 UIBezierPath:- (BOOL)containsPoint:(CGPoint)point

对于GGPath:

 bool CGContextPathContainsPoint (
CGContextRef context,
CGPoint point,
CGPathDrawingMode mode
);

如果这个点在你的路径上,那么你可以设置一个标志。在 touchesEnd 方法中您可以获得翻译后的点。但需要重新绘制路径。路径不会有弹性。

编辑:我为您的案例所做的一件事是CAShapeLayer。 CAShapeLayer可以绘制UIBazierPathCGPathRef。而且它还可以通过其描边结束和描边开始的属性进行动画处理。请参阅以下代码以了解使用 CAShapeLayer

绘制路径的想法
    UIBezierPath *path = [UIBezierPath bezierPath];
// Draw your path acording to your requirements
// Remember that you don't need to stroke path in this implementation
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = path.CGPath; // path is a UIBezierPath object
shapeLayer.strokeColor = [UIColor redColor].CGColor;
shapeLayer.fillColor = [UIColor clearColor].CGColor;
shapeLayer.lineWidth = 1.5;
shapeLayer.strokeStart = 0.0;
shapeLayer.strokeEnd = 1.0;
[shapeLayer renderInContext:ctx]; // you can also use addSubLayer: and drawInContext

关于ios - 如何通过手势使路径中的特定点可拖动。 iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13723955/

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