2012-07-13 29 views
0

我有一個屏幕,其中包含9個UIViews(想象3x3表中包含視圖,每行3個視圖),它佔用了所有屏幕。 我拖動一個UIView,然後移動它,然後我希望儘快touchEnded將其放置在其他截取UIViews之間的某個地方,並再次與UIViews 3x3屏幕現在當然重新排序與拖動的UIView在哪裏(某種程度上)它。在截取其他UIView之間插入一個UIView

除了對UIViews進行重新排序以外,一切都很順利。我需要一種方法來找出我猜想與其他UIView最相交(最大的區域是所有UIViews可拖動的UIView框架相交)和重新排列所有UIViews與新位置。

所有這些都發生在superview擁有所有的意見,並與UIViews有一個NSMutableArray。我不想移動列表中的對象,但通過框架找到解決方案。

想象一下,你在桌子上有9張牌並在這個3x3網格中改變它們的位置。

謝謝。

回答

0

只需使用view.center來確定點是否與其他視圖相交。如果它們不重疊,那麼中心只會觸及一個視圖。您可以使用以下代碼獲取相交視圖內的點。

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

然後你可以使用下面的代碼測試交集。

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

在這一點上,你知道你的拖動視圖的中心withing要測試

您也可以重新排列視圖這樣的觀點。

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

我理解的方式,但我不能得到正確定位,首先它如此難以進入,如果條件和,如果我嘗試在拖動瀏覽結束給予奧瑟維尤的新的幀值,則下一幀值給otherView。但它有幸運... – 2012-07-13 21:15:04

+0

添加新的代碼混合。框架的設置由您決定。根據您的計算。您可能有一組框架具有屏幕上每個項目的框架。或者你可能想要計算它。但至於按照你想要的順序添加它們。這段代碼應該有所幫助 – 2012-07-13 21:22:17

+0

我的問題是沒有進入if語句幾乎從來沒有。有時候只有... – 2012-07-13 21:59:07