我不知道如何在我的應用程序中獲得以下類型的功能。iPhone:如何拖放或移動UIImage/UIButton,如下所示?
如上圖所示的用戶可以滑動(拖曳)不同圖像部分和用戶可組裝圖像。
任何一個可以告訴我這是控制這個?或者它的任何教程?
我不知道如何在我的應用程序中獲得以下類型的功能。iPhone:如何拖放或移動UIImage/UIButton,如下所示?
如上圖所示的用戶可以滑動(拖曳)不同圖像部分和用戶可組裝圖像。
任何一個可以告訴我這是控制這個?或者它的任何教程?
檢查出MoveMe示例應用程序。它會告訴你如何通過觸摸和拖動來允許子視圖的移動。
然後,您可以創建爲每個拼圖碎片,可以到處移動imageViews。
一旦你做到了這一點,你需要一塊移動的過程中進行檢查,看時,得到足夠接近它在拼圖正確的位置,因此它可以卡到位時,那麼用戶放開一片。
http://developer.apple.com/library/ios/#samplecode/MoveMe/Introduction/Intro.html
+1爲最佳可能的示例應用程序。 MoveMe也是我閱讀這個問題時的第一個想法。 – Till
這一切都取決於你想要做的一種實現。 它可以是UIImageView,UIbutton等 與UIIMageView的優勢可以是你可以很容易地實現UIGestureRecognizer移動的意見..
這並不容易。您需要先編寫代碼以獲取如何移動圖像視圖。 Apple參考文獻中有很多樣本。然後你需要獲得每個圖像的邊界來做到這一點。
好極了!你可以寄給我樣品[email protected] – iPhone
對於一個應用程序,我建我使用的觸摸功能:
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
用於拖拽的UIImageViews。然後,您可以使用CGRectContainsRect或CGRectContainsPoint來檢測拼圖是否在正確的位置。
我對這個問題的第一次進攻就如下:
(1)子類的UIImageView持有每一塊拼圖。
(2)通過與UIPanGestureRecognizer初始化它自定義您的UIImageView子類。類似:
self.panRecognizer =
[[UIPanGestureRecognizer alloc]
initWithTarget: self
action: @selector(handlePan:)];
[self addGestureRecognizer:
self.panRecognizer];
(3)在與鍋手勢識別相關聯的動作的方法,基於從所述拼圖的泛手勢識別消息更新該對象的位置。像下面這樣應該工作:
-(void) handlePan:
(UIGestureRecognizer *)sender
{
UIPanGestureRecognizer *panRecognizer =
(UIPanGestureRecognizer *)sender;
if (panRecognizer.state ==
UIGestureRecognizerStateBegan ||
panRecognizer.state ==
UIGestureRecognizerStateChanged)
{
CGPoint currentPoint =
self.center;
CGPoint translation =
[panRecognizer translationInView:
self.superView];
self.center = CGPointMake
(currentPoint.x + translation.x,
currentPoint.y + translation.y);
[panRecognizer setTranslation: CGPointZero
inView: self.superView];
}
}
這裏是代碼如何移動imgTest這是一個UIImageView。經過測試,像魅力一樣工作。
[[self imgTest]setUserInteractionEnabled:YES];
//Save the first touch point
CGPoint firstTouchPoint;
//xd,yd destance between imge center and my touch center
float xd;
float yd;
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* bTouch = [touches anyObject];
if ([bTouch.view isEqual:[self imgTest]]) {
firstTouchPoint = [bTouch locationInView:[self view]];
xd = firstTouchPoint.x - [[bTouch view]center].x;
yd = firstTouchPoint.y - [[bTouch view]center].y;
}
}
{
UITouch* mTouch = [touches anyObject];
if (mTouch.view == [self imgTest]) {
CGPoint cp = [mTouch locationInView:[self view]];
[[mTouch view]setCenter:CGPointMake(cp.x-xd, cp.y-yd)];
}
}
我想這是一件更適合喜歡cocos2d的,不是的UIKit庫。 –
@RichardJ。RossIII:你能給我更多關於coocs2d的細節嗎?或鏈接? – iPhone
http://cocos2d-iphone.org –