我有一些UIViews,我希望用户能够在屏幕上“轻弹”。它们不是滚动视图。它们只包含一个光栅图像(png)。谁能指点我一些示例代码等来帮助我入门?比那里的“MoveMe”更重要的东西有助于检测“轻弹”(相对于“轻推”或拖放),然后在“轻弹”的方向上关闭视图?
OpenGL可能有点矫枉过正。如果可能的话,我想留在Core Graphics / Animation领域。
答案 0 :(得分:2)
我想说实现这个的easyeist方法是将你的视图放在一个启用了分页的UIScrollView容器中,让它担心所有“轻弹”动作。对我来说很棒。
您甚至可以通过一些额外的努力来延迟加载图像。
答案 1 :(得分:1)
我想你可以通过采取nazgul42答案并检查两个提到的事件之间的时间来轻松实现这一点。短时间和长距离组合可以被解释为轻弹。您还可以通过计算触摸事件点的坐标来确定轻弹的方向。
答案 2 :(得分:0)
假设您有一个名为UIView
的{{1}}和两个aView
,UIImageViews
和page1
。假设您已将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:));