如何“轻弹”UIImageView?

时间:2009-06-25 18:06:14

标签: iphone cocoa-touch core-animation quartz-graphics

我有一些UIViews,我希望用户能够在屏幕上“轻弹”。它们不是滚动视图。它们只包含一个光栅图像(png)。谁能指点我一些示例代码等来帮助我入门?比那里的“MoveMe”更重要的东西有助于检测“轻弹”(相对于“轻推”或拖放),然后在“轻弹”的方向上关闭视图?

OpenGL可能有点矫枉过正。如果可能的话,我想留在Core Graphics / Animation领域。

6 个答案:

答案 0 :(得分:2)

我想说实现这个的easyeist方法是将你的视图放在一个启用了分页的UIScrollView容器中,让它担心所有“轻弹”动作。对我来说很棒。

您甚至可以通过一些额外的努力来延迟加载图像。

答案 1 :(得分:1)

我想你可以通过采取nazgul42答案并检查两个提到的事件之间的时间来轻松实现这一点。短时间和长距离组合可以被解释为轻弹。您还可以通过计算触摸事件点的坐标来确定轻弹的方向。

答案 2 :(得分:0)

假设您有一个名为UIView的{​​{1}}和两个aViewUIImageViewspage1。假设您已将page2作为page1中的子视图,此代码将从aView翻转为page1

page2

答案 3 :(得分:0)

要检测触摸,在视图控制器中,您可以使用touchesBegan和touchesEnded方法,存储来自touchesBegan的触摸,如果触摸向左或向右移动了一些以上,则表示轻弹,而不是向左或向右轻推。

答案 4 :(得分:0)

我在这里发现了一个帖子,虽然这个方法让我担心 -

http://discussions.apple.com/message.jspa?messageID=7862186

不考虑速度或时间戳;只是自上次事件更新以来的距离。如果Apple更改了事件更新的频率/粒度,则此代码可能会中断。

答案 5 :(得分:0)

尝试使用UIPanGestureRecognizer *imageGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(imageDragged:)]; [imageView1 addGestureRecognizer:imageGesture]; 示例代码:

- (void)imageDragged:(UIPanGestureRecognizer *)gesture{
UIImageView *imageView = (UIImageView *)gesture.view;
CGPoint translation = [gesture translationInView:imageView];

imageView.center = CGPointMake(imageView.center.x + translation.x,
                               imageView.center.y + translation.y);
imageView2.center = imageView.center;
imageView3.center = imageView.center;

[gesture setTranslation:CGPointZero inView:imageView];}

然后

+ (id)recordWithQuality:(double)quality NS_SWIFT_NAME(record(quality:));