【问题标题】:Animate image with gesture用手势动画图像
【发布时间】:2014-07-09 19:12:55
【问题描述】:

我创建了一个飞机沿贝塞尔路径移动的动画。当用户滑动某个方向时,有没有办法启动动画? (即,如果用户向右平移,则飞机沿路径向右移动。如果用户向左平移,则飞机沿路径向左移动)。

感谢您的帮助。

【问题讨论】:

  • 是在用户滑动的时候开始动画还是沿着路径拖动图片?
  • 沿路径拖了很多。因此,如果用户停止手势,但仍在按下,图像会停留在曲线上的那个位置。
  • 实际上是沿着路径拖动还是只是通过水平移动来控制它(有点像this)?
  • 更多细节:我正在使用滚动视图。当用户从第一页滚动到第二页时,我打算实现这个动画。 (即在scrollview中间会有一个卡通iphone。当用户平移到第二页时,一架纸飞机将从第一页的iphone飞到第二页的iphone。)
  • 当您写了解决问题的内容后,请回来并发布它作为您问题的答案(并将其标记为已接受的答案)。这样,其他有相同问题的人可以找到问题,答案也可以帮助他们。

标签: ios animation bezier


【解决方案1】:

曲线设置:

self.trackPath = [UIBezierPath bezierPath];
self.trackPath = [UIBezierPath bezierPathWithArcCenter:P(self.scrollView.center.x,self.scrollView.center.y-20)
                               radius:110
                           startAngle:DEGREES_TO_RADIANS(70)
                             endAngle:DEGREES_TO_RADIANS(115)
                            clockwise:NO];


self.plane = [CALayer layer];
self.plane.bounds = CGRectMake(0, 0, 60.0, 60.0);
self.plane.position = CGPointMake(self.scrollView.center.x,self.scrollView.center.y-20);
self.plane.contents = (id)([UIImage imageNamed:@"profile_tag"].CGImage);
[self.view.layer addSublayer:self.plane];

CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
anim.path = self.trackPath.CGPath;
anim.duration = 320.;
[self.plane addAnimation:anim forKey:nil];
self.plane.speed = 0.0;
self.plane.hidden = YES;

分页时:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat pageWidth = self.scrollView.frame.size.width;
    int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    self.pageControl.currentPage = page;

    if((scrollView.contentOffset.x >= 320) && (scrollView.contentOffset.x<=640)){
        self.plane.hidden = NO;
        self.plane.timeOffset = scrollView.contentOffset.x - 320;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多