如何从Swift中的UIBeizierPath识别shapeLayer中的对象?下面是示例应用程序PopAGraph。提前谢谢。
我的代码:
int delay = 5000; // delay for 5 sec.
int interval = 30000; // iterate every 30 sec.
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
getCurrentLocation // Your method from above ..
}
}, delay, interval);
我的形象和形状:
答案 0 :(得分:0)
CAShapeLayer是一个hitTest()函数。在您的超级视图中:
private func setUpShapeLayer() {
self.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer()
tapGesture.numberOfTapsRequired = 1
tapGesture.addTarget(self, action: #selector(viewTapped))
self.addGestureRecognizer(tapGesture)
[your code to add shapeLayer]
}
internal func viewTapped(_ recognizer:UITapGestureRecognizer) {
let p = recognizer.location(in: self)
if (shapeLayer.hitTest(p) != nil) {
[do something here]
} else if (greenLayer.hitTest(p) != nil) {
}
编辑:正如评论中所提到的,我完全误解了问题是什么。
OP中的链接指向一个看起来正在发生某些专有功能的应用。如果你想要类似的iOS“开箱即用”功能,这里是你能做的最好的事情:
(1)让用户通过平移轮廓来创建CAShapeLayer。
(2)在图像上运行CoreImage过滤器(CIEdges)以检测所有边缘。
(3)找到连续(没有端点关闭)边缘的“最佳拟合”,其中所述边的hitTest()位于CAShapeLayer中并突出显示它。
我已经看过几次这个视频了,它让我感到疑惑 - 如果用户追踪的形状会切断自由女神像头?该应用程序会做什么?切断雕像头,识别完整的雕像,或导致无法识别?
最后一次观察不是意见,而是指出这可能是一个演示应用程序的“最佳案例”功能的演示。如果用户做了“不太理想”或意外的事情,事实上可能会让你更好地了解它如何完成它的工作。