美文网首页
【iOS开发】音乐播放器专辑图片旋转动画[转]

【iOS开发】音乐播放器专辑图片旋转动画[转]

作者: 未来计划 | 来源:发表于2018-12-14 12:25 被阅读0次

    原文地址:https://blog.csdn.net/u014636932/article/details/77479210

    仿网易云音乐专辑图片的旋转动画

    用过网易云音乐的人都知道,在网易云音乐的控制界面有一张旋转的,类似唱片一样的图片,这个效果其实是两张图片合成的,一张是黑色胶片,中间一张是专辑图片。这里不说怎么合成一张图片,只说说专辑图片的旋转动画。废话不多说,看代码:

    objective-c版:

    // 开始旋转

    - (void)startRotating {   

            CABasicAnimation* rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];   

            rotateAnimation.fromValue = [NSNumber numberWithFloat:0.0];   

            rotateAnimation.toValue = [NSNumber numberWithFloat:M_PI * 2];   // 旋转一周

            rotateAnimation.duration = 20.0;                                 // 旋转时间20秒

            rotateAnimation.repeatCount = MAXFLOAT;                          // 重复次数,这里用最大次数       

            [_mainCDIV.layer addAnimation:rotateAnimation forKey:nil];    

    }

    // 停止旋转

    - (void)stopRotating {   

            CFTimeInterval pausedTime = [_mainCDIV.layer convertTime:CACurrentMediaTime() fromLayer:nil];   

            _mainCDIV.layer.speed = 0.0;                                          // 停止旋转  

           _mainCDIV.layer.timeOffset = pausedTime;                              // 保存时间,恢复旋转需要用到

    }

    // 恢复旋转

    - (void)resumeRotate {   

    if  (_mainCDIV.layer.timeOffset == 0)  {       

            [self startRotating];

            return;   

    }       

    CFTimeInterval pausedTime = _mainCDIV.layer.timeOffset;   

    _mainCDIV.layer.speed = 1.0;                                         // 开始旋转 

      _mainCDIV.layer.timeOffset = 0.0;   

    _mainCDIV.layer.beginTime = 0.0;   

    CFTimeInterval timeSincePause = [_mainCDIV.layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;                                             // 恢复时间   

    _mainCDIV.layer.beginTime = timeSincePause;                          // 从暂停的时间点开始旋转

    }

    相关文章

      网友评论

          本文标题:【iOS开发】音乐播放器专辑图片旋转动画[转]

          本文链接:https://www.haomeiwen.com/subject/xsftmftx.html