首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >touchBegan,检查是否触摸CAShapeLayer

touchBegan,检查是否触摸CAShapeLayer
EN

Stack Overflow用户
提问于 2020-04-04 04:14:02
回答 1查看 86关注 0票数 0

因此,我绘制了许多CAShapeLayers,在我的touchesBegan函数中,当这些层之一被触摸时,我想执行一个操作。

我绘制图层的方法之一是:

代码语言:javascript
代码运行次数:0
运行
复制
func drawBoundary(line: UIBezierPath) {
    let boundaryLayer = CAShapeLayer()

    boundaryLayer.lineCap = .square
    boundaryLayer.path = line.cgPath
    boundaryLayer.strokeColor = UIColor.green.cgColor
    boundaryLayer.lineWidth = 100
    boundaryLayer.opacity = 0.2
    boundaryLayer.accessibilityLabel = "OuterBoundary"

    self.layer.addSublayer(boundaryLayer)
}

touchedBegan函数:

代码语言:javascript
代码运行次数:0
运行
复制
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch = touches.first
    let point = touch!.location(in: self)
    print(point)

    if let sublayers = self.layer.sublayers as? [CAShapeLayer]
    {
        for layer in sublayers
        {
            if layer.path!.contains(point)
            {
                print("In boundary")
            }
        }
    } 
}

但是,当我点击所绘制的形状时,图层将打印到屏幕上,如果我在图层中循环并打印以满足每一层的打印,我将不会得到响应。只是不知道如何正确地捡起我碰过的东西。

这就是我的形状是如何打印的,绿色阴影区域是drawBoundary()的结果,灰色圆圈也是用另一种方法绘制的:

我有一种感觉,就是把这些层作为CALayers,而不是没有.path值的CAShapeLayer。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-04 06:30:38

您正在尝试将self.layer.sublayers转换为不太可能发生的CAShapeLayer数组。您需要检查self.layer.sublayers中的每个元素是否是CAShapeLayer。试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch = touches.first
    let point = touch!.location(in: self)

    guard let sublayers = layer.sublayers else { return }

    for sublayer in sublayers {
        if let sublayer = sublayer as? CAShapeLayer, let path = sublayer.path {
            if path.contains(point) {
                print("yes")
            }
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61023673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档