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

原文地址: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开发】音乐播放器专辑图片旋转动画[转])