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
都具有相同的即时超级视图。而myView
是boxViews
中的视图之一。
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