iPhone:如何拖动或移动UIImage / UIButton,如下所示?

时间:2011-12-05 16:36:32

标签: iphone objective-c ios cocoa-touch ios4

我不知道如何在我的应用中获得以下类型的功能。

enter image description here

如上图所示,用户可以滑动(拖动)不同的图像部分,用户可以组装图像。

任何人都可以告诉我这个控件是什么?或者任何教程?

6 个答案:

答案 0 :(得分:7)

查看MoveMe示例应用。它将向您展示如何通过触摸和拖动来移动子视图。

然后,您可以为每个可以移动的拼图创建imageView。

一旦你完成了这个,你需要检查一件物品的移动过程,看它是否足够接近它在拼图中的正确位置,这样当用户放开它时它就会卡入到位。

http://developer.apple.com/library/ios/#samplecode/MoveMe/Introduction/Intro.html

答案 1 :(得分:1)

这一切都取决于您想要执行的实现类型。 它可以是UIImageView,UIbutton等。 UIIMageView的优势在于您可以轻松实现UIGestureRecognizer来移动视图。

答案 2 :(得分:1)

对于我构建的应用,我使用了触摸功能:

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event 
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event 

用于拖动UIImageViews。然后,您可以使用CGRectContainsRect或CGRectContainsPoint来检测拼图块是否位于正确的位置。

答案 3 :(得分:0)

如果我们谈论UIKit, 这可能是一个UIImageView,图像具有部分透明区域。

答案 4 :(得分:0)

这并不容易。您需要首先编写代码以了解如何移动图像视图。 Apple参考文献中有很多样本。然后你需要获得每个图像的边界来做到这一点。

答案 5 :(得分:0)

我对这个问题的第一次攻击如下:

(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];
  }
}