Swift:如何判断 myView 与哪个 UIView(s) 相交?

Posted

技术标签:

【中文标题】Swift:如何判断 myView 与哪个 UIView(s) 相交?【英文标题】:Swift: How to tell which UIView(s) myView is intersecting with? 【发布时间】:2015-02-18 19:22:18 【问题描述】:

我有一个包含 16 个 boxView 的数组,它们出现在我的 superview 上的随机位置。我正在拖动 myView,这是一个特殊的 subView。我需要能够在任何给定时间判断 myView 与哪个 boxView 相交。我该如何做到这一点?

【问题讨论】:

你试过什么不起作用?你已经标记了CGRectIntersectsRect,所以你显然知道所有的片段...... @Ian MacDonald,如果 myView 与两个(或更多)boxViews 相交,我可以使用 CGRectIntersectsRect 进行测试,但我需要知道我正在测试的 boxViews 的名称(数组位置)反对。现在我突然意识到,我可以使用循环来测试数组的每个成员,以判断 myView 与哪些数组成员相交。非常感谢你。这是实现这一目标的最佳方式吗? 【参考方案1】:

假设您有boxViews,它是您的超级视图中所有视图的数组。并且boxViews 中的所有UIViews 都具有相同的即时超级视图。而myViewboxViews 中的视图之一。

let intersectedViews = boxViews.filter  $0 !== myView 
                               .filter  CGRectIntersection(myView.frame, $0.frame) 

【讨论】:

稍微干净一点:let intersectingViews = boxViews.filter $0 != myView && myView.frame.intersects($0.frame) 我没有测试这个解决方案,因为我浏览了我的 boxViews 数组并测试了它们中的每一个是否与 myView 相交。效果很好,感谢@Ian MacDonald 的指点。

以上是关于Swift:如何判断 myView 与哪个 UIView(s) 相交?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得根据标签内容动态变化的 UIView 的高度 - Swift

Swift、iboutlet 和自定义控件

Swift UIButton背景颜色不会改变

swift怎么在点击按钮时重新调用uiview的drawrect函数

如何在页面控件swift上捕获点击事件

如何拍照并同时保存(swift3)