2013-02-27 50 views
1

我一直忙於開發一款遊戲,而且我在其中一個難以找到的部分。我可能完全處於如何做到這一點的錯誤之處。將imageView拖入另一個

我有什麼是在我的董事會幾個圖像。他們是我拖入其中的物體(瓷磚)的持有者。 (同樣,我不知道這是不是最好的或做的正確方法。)

比如我做了一個形象,以顯示我的意思:

在這張照片我有一個形象(A)我想拖動到頂部瓷磚中的一個,我的代碼必須自動檢測(A)最常見的圖像視圖並將其放置在該視圖中。

enter image description here

我真是堅持在這裏,我想就如何到這個或其他做這樣的事情的方式的一些信息。

A已經可以拖動。

回答

2

您可以使用bool CGRectIntersectsRect (CGRect rectA,CGRect rect1);(rect1或rect2或3或4) 來檢查'A'的幀與四個頂部瓷磚中的任何一個的交集。

路口後,您可以檢查每個區塊的中心之間的最小距離到「A」的檢查哪些瓷磚包含最A.(全UIView具有center屬性)

這是假設所有瓷磚和A是分開的意見。

或者第二個想法是,您可以在檢查之前檢查中心之間保持最小距離的最小距離,並完全避免第一步。

CGFloat xDist = (p2.x - p1.x); 
CGFloat yDist = (p2.y - p1.y); 
CGFloat distance = sqrt((xDist * xDist) + (yDist * yDist)); 
+0

感謝你爲這個。對我來說這聽起來最合乎邏輯,正如我今天在工作中談到的那樣。我不想將imageview設置爲A的圖像,因此我能夠將A對象的中心與其中一個視圖的中心進行匹配?謝謝。 – Kevin 2013-02-28 02:06:07

+0

是的。您可以將A的中心指定爲其中一個瓷磚的中心之一。 – Rakesh 2013-02-28 02:30:03

1

使物業爲您的手勢:

@property (nonatomic, strong) UILongPressGestureRecognizer *longPress; 

初始化:

self.longPress = [UILongPressGestureRecognizer initWithTarget:self action:@selector(gestureRecognizedStateDidChanged:)]; 
self.longPress.minimumPressDuration = 0.03; 

你的視圖控制器類應該實現<UIGestureRecognizerDelegate>協議:

self.longPress.delegate = self; 

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)sender { 
return CGRectContainsPoint(self.targetImage.frame, [sender locationInView:self.view]); 
} 

- (void)gestureRecognizedStateDidChanged:(UILongPressGestureRecognizer *)sender { 
switch (recognizer.state) { 
     case UIGestureRecognizerStatePossible: 
     case UIGestureRecognizerStateBegan: { 
     // did started, you can pick up your view 
     self.targerImageView.center = [sender locationInView:self.view]; 
     break; 
    } 
    case UIGestureRecognizerStateFailed: 
    case UIGestureRecognizerStateCancelled: 
    case UIGestureRecognizerStateEnded: { 
     // drop callback, bring you view home or to target 
     if (CGRectContainsPoint(self.toDropImageViews.frame, [sender locationInView:self.view]) { 
      // do you drop code here 
     } 
     break; 
    } 
    case UIGestureRecognizerStateChanged: { 
     self.targerImageView.center = [sender locationInView:self.view]; 
     // moving callback 
     break; 
     } 
    } 
+0

謝謝你的這個發現很難理解,但我會保持這段代碼,而即時通訊讓我看起來很有前途感謝 – Kevin 2013-02-28 02:06:46

相關問題