在相交的其他UIView之间插入UIView

时间:2012-07-13 20:44:21

标签: objective-c uiview position

我有一个屏幕,其中包含9个UIViews(想象3x3表视图,每行3个视图),占据所有屏幕。 我拖动一个UIView,然后移动它,然后我想尽快touchEnded将它放在其他拦截UIViews之间的某个地方,并再次使用UIViews的3x3屏幕现在当然重新排序拖动的UIView我在哪里(不知何故)把它

除了UIViews的重新排序之外,一切都很顺利。我需要一种方法来找出我猜其他UIView最相交的地方(最大的区域在可拖动UIView框架的所有UIView之间相交)并重新排序所有UIViews的新位置。

所有这些都发生在拥有所有视图的superview中,并且具有带有UIViews的NSMutableArray。我不想移动列表中的对象,而是通过框架找到解决方案。

想象一下,你在桌子上有9张牌,并在这个3x3网格中改变位置。

谢谢。

1 个答案:

答案 0 :(得分:0)

只需使用view.center来确定该点是否与另一个视图相交。如果它们没有重叠,那么中心只会打一个视图。您可以使用以下代码获取相交视图中的点。

CGPoint centerInOtherView = [thisView convertPoint:thisView.center toView:otherView];

然后您可以使用以下代码测试交集。

if ([otherView pointInside:centerInOtherView withEvent:nil]){
    // Do Something
}

此时您知道拖动视图的中心正在测试您正在测试的视图

您也可以重新排列视图。

UIView *mySuperView = [thisView superview];
NSUInteger index = [[[mySuperView subviews] indexOfObject:otherView];
[thisView removeFromSuperview];
[mySuperView insertSubview:newView atIndex:index];