ios - 带手势的动画图像

标签 ios animation bezier

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

感谢您的帮助。

最佳答案

曲线设置:

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

关于ios - 带手势的动画图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661964/

相关文章:

ios - 在 iOS 上静音 JWPlayer (Swift)

ios - 如何在 Xamarin ios 中获取导航栏后退按钮的大小?

ios - 动画化 CALayer 背景颜色并更新模型值

javascript - 如何绘制跨越圆周点的平滑路径

当我在没有计算机的情况下运行 iOS 应用程序时,它有时会在启动时崩溃。怎么能诊断这个?

iphone - 上传图片时如何在iphone中显示进度条

ipython (jupyter) 笔记本中的动画 - ValueError : I/O operation on closed file

java - 如何将 "manual animation"设计成没有代码延迟的 Android 游戏

opengl - 如何在OpenGL中绘制2D不规则曲线形状

java - Java 如何对 Path2D 进行三角剖分?