2013-05-15 32 views
4

我正在製作我的第一個應用程序,非常像紙牌遊戲 - 用戶必須移動卡片並將它們堆疊在一起。現在我對Objective-C非常陌生,所以我希望你在我的問題很愚蠢的時候原諒我。使用BringSubviewToFront時圖像對齊回來

所以我正在嘗試的事情,我有兩個UIImageViewsUIPanGestureRecgonizer附加到他們。因此,無論何時用戶拖動其中一張卡片,它必須位於另一張卡片的頂部。我在我的ViewController.m文件中使用了下面的代碼,但問題是,當我拖動一張卡片,然後想要拖動另一張卡片時,第一張卡片會恢復到原始位置,但我希望它保持在哪裏我拖着它。當我將bringSubviewToFront註釋掉時,這不會發生,但其中一張牌總是落後於另一張。

-(IBAction)dragCard:(UIPanGestureRecognizer *)recognizer { 

UIView *cardView = [(UIPanGestureRecognizer *)recognizer view]; 
[self.view bringSubviewToFront:cardView]; 

CGPoint translation = [recognizer translationInView:self.view]; 
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y); 
[recognizer setTranslation:CGPointZero inView:self.view];} 

我無法弄清楚是什麼原因造成的。你能幫我...

編輯:我登錄self.view.subviews顯示發生了什麼。我已經拖了圖像與標籤1,現在我開始拖動圖像與標籤2.您可以看到,無論座標變化 - 與標籤標籤與圖像2 1個移動回原來的位置,圖像也移動:

2013-05-16 17:02:20.424 (
"<UIImageView: 0x71749e0; frame = (0 0; 320 411); autoresize = TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x7174a40>>", 
"<UIImageView: 0x7172ef0; frame = (25 77; 42 58); autoresize = TM+BM; tag = 1; gestureRecognizers = <NSArray: 0x7171700>; layer = <CALayer: 0x7171620>>", 
"<UIImageView: 0x71722f0; frame = (88 200; 42 58); autoresize = TM+BM; tag = 2; gestureRecognizers = <NSArray: 0x7171bc0>; layer = <CALayer: 0x7172350>>" 

2013-05-16 17:02:20.441 (
"<UIImageView: 0x71749e0; frame = (0 0; 320 411); autoresize = TM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x7174a40>>", 
"<UIImageView: 0x7172ef0; frame = (30 177; 42 58); autoresize = TM+BM; tag = 1; gestureRecognizers = <NSArray: 0x7171700>; layer = <CALayer: 0x7171620>>", 
"<UIImageView: 0x71722f0; frame = (91 201; 42 58); autoresize = TM+BM; tag = 2; gestureRecognizers = <NSArray: 0x7171bc0>; layer = <CALayer: 0x7172350>>" 

第一個ImageView是我的背景圖片。

+0

爲什麼每次創建cardView的新對象時,請將其聲明爲.h文件並使用相同的名稱並告訴我會發生什麼 – iEinstein

+0

感謝您的建議,但問題仍然存在 – flouwer

+0

您是否正在重寫'layoutSubviews'查看? – danypata

回答

1

好的,找到答案here。這是bringSubviewToFront和Autolayout的一個問題。對不起,重複這個問題。