我可以在表示层中访问CAShapeLayer的path属性吗?

贾斯999

我有一个名为“ starfish”的UIView子视图。它的支持层是CAShapeLayer,其路径抚摸着海星形状。我想在封闭路径中而不是视图矩形中的视图控制器中对此形状进行命中测试。没问题,我只需在视图控制器的touchesBegan和命中测试工作中的CAShapeLayer路径属性上调用CGPathContainsPoint()即可。

CGPoint p = [[touches anyObject] locationInView:self.view];
CGPoint q = [self.view convertPoint:p toView:self.starfish];

if (CGPathContainsPoint([(CAShapeLayer*)self.starfish.layer path], NULL, q, true))
    NSLog(@"Success");
else
    NSLog(@"Fail");

但是,如果视图是动画的,则从A移到B,则需要在展示层中访问CAShapeLayer的路径以进行相同的命中测试,但我似乎无法访问此路径。

// Not working during animation
if (CGPathContainsPoint([(CAShapeLayer*)self.starfish.layer.presentationLayer path], NULL, q, true))
    NSLog(@"Success");
else
    NSLog(@"Fail");
贾斯999

好吧,我找到了一个可行的解决方案。我创建了一个新的CAShapeLayer,具有与我在touchesBegan中测试的CAShapelayer相同的路径和框架(基于表示层)。

CGPoint p = [[touches anyObject] locationInView:self.view];

CGRect rect = [(CAShapeLayer*)self.starfish.layer.presentationLayer frame];

CAShapeLayer *shape = [CAShapeLayer layer];
shape.path = [(CAShapeLayer*)self.starfish.layer path];
shape.frame = rect;

CGPoint q = [self.view.layer convertPoint:p toLayer:shape];

if (CGPathContainsPoint(shape.path, NULL, q, true))
    NSLog(@"Success");
else
    NSLog(@"Fail");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以通过Exttenscript访问Mask> Mask Path> Shape> BoundingBox属性吗?

来自分类Dev

我可以在表示层中使用域层实体类型吗?

来自分类Dev

我可以快速访问touchBegan方法中的触摸节点属性吗?

来自分类Dev

我可以通过Java中的超类引用访问子类对象的属性吗?

来自分类Dev

我可以在C#中为自动实现的属性访问器创建委托实例吗?

来自分类Dev

我可以总结注释中的属性吗?

来自分类Dev

我可以使用变量访问对象的嵌套属性吗?

来自分类Dev

我们可以在独立的应用程序中使用数据访问层吗?

来自分类Dev

列表中的函数可以访问R中的列表属性吗?

来自分类Dev

我可以从Realm React Native中嵌套对象架构上的Relationship方法访问具有循环引用的属性对象吗

来自分类Dev

即使访问仅限于我的数据访问层,我也需要在UI中引用实体框架吗?

来自分类Dev

keras-嵌入层,我可以在模型的管道中更改经过训练的嵌入层的值吗?

来自分类Dev

我可以在ubuntu touch中访问/ sdcard /吗?

来自分类Dev

我可以从默认继承中更改访问者吗?

来自分类Dev

我可以在jackson BeanSerializerModifier中访问请求参数吗?

来自分类Dev

我可以访问 vector 中尚未声明的位置吗?

来自分类Dev

我可以在GDB中的“内存访问”上设置断点吗?

来自分类Dev

我可以在Linux中锁定对TCP端口的访问吗

来自分类Dev

在Electron Framework中,我可以访问剪贴板吗?

来自分类Dev

我可以像这样访问redux中的状态吗?

来自分类Dev

我可以在Google Cloud Function中访问GraphicsMagicks或ImageMagicks吗?

来自分类Dev

我可以在C#中访问对象的字段吗

来自分类Dev

我可以访问模板中的AngularJS模块配置值吗?

来自分类Dev

我可以在 django 的 html 中从 html 访问 GCS 吗?

来自分类Dev

我可以在剃刀页面(cshtml) 中访问blazor(.razor) 吗?

来自分类Dev

我们可以将 Web 层中的 EC2 实例设为私有吗?

来自分类Dev

在类型为“填充”的mapbox gl js层中:我们可以控制笔触的粗细吗?

来自分类Dev

在MVVM模式中,域层的实体可以作为我的模型吗?

来自分类Dev

我可以使用CSS在多层列表中为最后一层创建样式吗?

Related 相关文章

  1. 1

    我可以通过Exttenscript访问Mask> Mask Path> Shape> BoundingBox属性吗?

  2. 2

    我可以在表示层中使用域层实体类型吗?

  3. 3

    我可以快速访问touchBegan方法中的触摸节点属性吗?

  4. 4

    我可以通过Java中的超类引用访问子类对象的属性吗?

  5. 5

    我可以在C#中为自动实现的属性访问器创建委托实例吗?

  6. 6

    我可以总结注释中的属性吗?

  7. 7

    我可以使用变量访问对象的嵌套属性吗?

  8. 8

    我们可以在独立的应用程序中使用数据访问层吗?

  9. 9

    列表中的函数可以访问R中的列表属性吗?

  10. 10

    我可以从Realm React Native中嵌套对象架构上的Relationship方法访问具有循环引用的属性对象吗

  11. 11

    即使访问仅限于我的数据访问层,我也需要在UI中引用实体框架吗?

  12. 12

    keras-嵌入层,我可以在模型的管道中更改经过训练的嵌入层的值吗?

  13. 13

    我可以在ubuntu touch中访问/ sdcard /吗?

  14. 14

    我可以从默认继承中更改访问者吗?

  15. 15

    我可以在jackson BeanSerializerModifier中访问请求参数吗?

  16. 16

    我可以访问 vector 中尚未声明的位置吗?

  17. 17

    我可以在GDB中的“内存访问”上设置断点吗?

  18. 18

    我可以在Linux中锁定对TCP端口的访问吗

  19. 19

    在Electron Framework中,我可以访问剪贴板吗?

  20. 20

    我可以像这样访问redux中的状态吗?

  21. 21

    我可以在Google Cloud Function中访问GraphicsMagicks或ImageMagicks吗?

  22. 22

    我可以在C#中访问对象的字段吗

  23. 23

    我可以访问模板中的AngularJS模块配置值吗?

  24. 24

    我可以在 django 的 html 中从 html 访问 GCS 吗?

  25. 25

    我可以在剃刀页面(cshtml) 中访问blazor(.razor) 吗?

  26. 26

    我们可以将 Web 层中的 EC2 实例设为私有吗?

  27. 27

    在类型为“填充”的mapbox gl js层中:我们可以控制笔触的粗细吗?

  28. 28

    在MVVM模式中,域层的实体可以作为我的模型吗?

  29. 29

    我可以使用CSS在多层列表中为最后一层创建样式吗?

热门标签

归档