[英]Swift Xcode Collisions between group members, but not groups
如果您只是有两个要检查冲突的视图数组,那么这应该只是测试两组之间的所有对(或者您是想找到一种优化的方式来做这件事?):
let collidingViews = group1.filter{ (view) in group2.contains{ $0.frame.intersects(view.frame) }}
如果您需要检查属于层次结构的特定视图的冲突,则可以使用UIView标记作为组标识符,并扩展UIView来识别冲突:
extension UIView
{
func collidesWith(_ other: UIView)
{
return other !== self
&& tag == other.tag
&& frame.intersects(other.frame)
}
var collidingViews:[UIView]
{ return superview.subviews.filter{self.collidesWith($0)} }
}
然后,您可以使用此功能检查一个视图(例如,一个正在移动的视图)与另一个视图之间的冲突:
for collidingView in view.collindingViews
{
// ... do something with the collindingView
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.