0

我有一个包含 9 个 UIViews 的屏幕(想象 3x3 表和视图,每行 3 个视图)占据所有屏幕。我拖动一个 UIView,然后移动它,然后我希望一旦 touchEnded 将其放置在其他拦截 UIView 之间的某个位置,并再次使用 UIViews 的 3x3 屏幕,当然现在使用拖动的 UIView 重新排序,我(以某种方式)放置它.

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

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

想象一下,您在一张桌子上有 9 张牌,并在这个 3x3 网格中更改它们的位置。

谢谢你。

4

1 回答 1

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];
于 2012-07-13T20:50:40.950 回答