我不知道如何在我的应用中获得以下类型的功能。
如上图所示,用户可以滑动(拖动)不同的图像部分,用户可以组装图像。
任何人都可以告诉我这个控件是什么?或者任何教程?
答案 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];
}
}