我正在製作我的第一個應用程序,非常像紙牌遊戲 - 用戶必須移動卡片並將它們堆疊在一起。現在我對Objective-C非常陌生,所以我希望你在我的問題很愚蠢的時候原諒我。使用BringSubviewToFront時圖像對齊回來
所以我正在嘗試的事情,我有兩個UIImageViews
與UIPanGestureRecgonizer
附加到他們。因此,無論何時用戶拖動其中一張卡片,它必須位於另一張卡片的頂部。我在我的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是我的背景圖片。
爲什麼每次創建cardView的新對象時,請將其聲明爲.h文件並使用相同的名稱並告訴我會發生什麼 – iEinstein
感謝您的建議,但問題仍然存在 – flouwer
您是否正在重寫'layoutSubviews'查看? – danypata