当前位置:  开发笔记 > 编程语言 > 正文

将CGPoint从UIView坐标系转换为CALayer坐标系

如何解决《将CGPoint从UIView坐标系转换为CALayer坐标系》经验,为你挑选了2个好方法。

有一些方法可以将CGPoint从一个UIView转移到另一个UIView,从一个CALayer转移到另一个.我找不到将CGPoint从UIView的坐标系更改为CALayer坐标系的方法.

图层及其主视图是否具有相同的坐标系?我需要在它们之间转换点吗?

谢谢,科里

[编辑]

谢谢你的回答!很难找到有关iPhone和Mac上CA之间差异/相似性的信息.我很惊讶我发现在任何Apple文档中都没有直接解决这个问题.

我正在寻求这个答案,以帮助解决我正在排除故障的错误,这是我最好的猜测,但我想我正在咆哮错误的树.如果坐标系是相同的,那么我有另一个问题......

我可以在Stack Overflow上找到我遇到的实际问题: 图层命中测试仅在触摸图层的下半部分时返回图层



1> schwa..:

hitTest的文档说:

/* Returns the farthest descendant of the layer containing point 'p'.
 * Siblings are searched in top-to-bottom order. 'p' is in the
 * coordinate system of the receiver's superlayer. */

所以你需要做(像这样):

CGPoint thePoint = [touch locationInView:self];
thePoint = [self.layer convertPoint:thePoint toLayer:self.layer.superlayer];
CALayer *theLayer = [self.layer hitTest:thePoint];



2> otto..:

在Apple文档方面,我在《核心动画编程指南》(2008-11-13)的“层坐标系统”部分中找到了“ iPhone OS Note” 。

UIView实例的默认根层使用与UIView实例的默认坐标系匹配的翻转坐标系-原点位于左上角,而值则向右下方递增。通过实例化CALayer创建的图层直接使用标准的Core Animation坐标系。

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有