iOS实现音乐播放器图片旋转
本文实例为大家分享了iOS实现音乐播放器图片旋转的具体代码,供大家参考,具体内容如下
通过给继承与UIImageView的类CXGImageView添加CABasicAnimation转动动画,实现播放器图片转动效果.
主要提供三个方法:startRotating,stopRotating,resumeRotate
startRotating
///开始动画 funcstartRotating(){ letrotateAnimation=CABasicAnimation(keyPath:"transform.rotation") rotateAnimation.isRemovedOnCompletion=false//避免点击Home键返回,动画停止 rotateAnimation.fromValue=0.0 rotateAnimation.toValue=Double.pi*2 rotateAnimation.duration=20 rotateAnimation.repeatCount=MAXFLOAT self.layer.add(rotateAnimation,forKey:nil) isRotating=true }
stopRotating
///停止动画 funcstopRotating(){ if!isRotating{ return } letpausedTime=self.layer.convertTime(CACurrentMediaTime(),from:nil) //让CALayer的时间停止走动 self.layer.speed=0 //让CALayer的时间停留在pausedTime这个时刻 self.layer.timeOffset=pausedTime isRotating=false }
resumeRotate
///继续动画 funcresumeRotate(){ ifisRotating{ return } ifself.layer.timeOffset==0{ startRotating() return } letpausedTime=self.layer.timeOffset //1.让CALayer的时间继续行走 self.layer.speed=1.0 //2.取消上次记录的停留时刻 self.layer.timeOffset=0.01 //3.取消上次设置的时间 self.layer.beginTime=0.0 //4.计算暂停的时间(这里也可以用CACurrentMediaTime()-pausedTime) lettimeWhenpause=self.layer.convertTime(CACurrentMediaTime(),from:nil)-pausedTime //5.设置相对于父坐标系的开始时间(往后退timeSincePause) self.layer.beginTime=timeWhenpause isRotating=true }
注意:使用中发现,当点下Home键再次返回应用时,图片停止转动,需要将动画isRemovedOnCompletion置成false.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。