如何检测两个 CALayer 是不是重叠?

Posted

技术标签:

【中文标题】如何检测两个 CALayer 是不是重叠?【英文标题】:How can i detect whether two CALayers overlap?如何检测两个 CALayer 是否重叠? 【发布时间】:2012-07-11 22:31:32 【问题描述】:

在我的应用中,用户可以从一堆 CALayer 中拖动顶部的 CALayer。

当用户停止拖动时,CALayer 应该返回到其在其他 CALayer 之上的原始位置。除非 CALayer(拖动后)不再与其他 CALayer 重叠,在这种情况下,它应该在其他 CALayer 下方移动。

现在,如何检测两个 CALayer 是否重叠?

【问题讨论】:

【参考方案1】:

CALayer 的 frame 属性是一个 CGRect。幸运的是,CGGeometry 有以下方法:

CGRectIntersectsRect

你会这样使用它:

if (CGRectIntersectsRect(myLayer1.frame,myLayer2.frame)) 

//code


【讨论】:

感谢卡恩,这帮助了我!

以上是关于如何检测两个 CALayer 是不是重叠?的主要内容,如果未能解决你的问题,请参考以下文章

如何检测小部件是不是在堆栈中重叠?

调试 Firebase 崩溃报告 - CALayer 位置包含 NAN

如何检测两个 UIImageView 何时重叠?

检测视图是不是重叠

iOS开发UI篇—CAlayer(自定义layer)

如何检查两个小部件是不是在颤动中重叠?