欢迎来到代码驿站!

iOS代码

当前位置:首页 > 移动开发 > iOS代码

iOS实现音乐播放器图片旋转

时间:2021-05-10 08:46:37|栏目:iOS代码|点击:

本文实例为大家分享了iOS实现音乐播放器图片旋转的具体代码,供大家参考,具体内容如下

通过给继承与 UIImageView 的类 CXGImageView 添加 CABasicAnimation 转动动画,实现播放器图片转动效果.

主要提供三个方法: startRotating, stopRotating,resumeRotate

startRotating

/// 开始动画
func startRotating() {
 let rotateAnimation = 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

/// 停止动画
func stopRotating() {
 if !isRotating {
 return
 }
 let pausedTime = self.layer.convertTime(CACurrentMediaTime(), from: nil)
 // 让CALayer的时间停止走动
 self.layer.speed = 0
 // 让CALayer的时间停留在pausedTime这个时刻
 self.layer.timeOffset = pausedTime
 isRotating = false
}

resumeRotate

/// 继续动画
func resumeRotate() {

 if isRotating {
 return
 }

 if self.layer.timeOffset == 0 {
 startRotating()
 return
 }

 let pausedTime = 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)
 let timeWhenpause = self.layer.convertTime(CACurrentMediaTime(), from: nil) - pausedTime
 // 5. 设置相对于父坐标系的开始时间(往后退timeSincePause)
 self.layer.beginTime = timeWhenpause
 isRotating = true

}

注意: 使用中发现,当点下 Home 键再次返回应用时,图片停止转动,需要将动画 isRemovedOnCompletion 置成 false.

上一篇:Objective-C处理空字符串和页面传值及自定义拷贝

栏    目:iOS代码

下一篇:IOS第三方库ZXEasyCoding

本文标题:iOS实现音乐播放器图片旋转

本文地址:http://www.codeinn.net/misctech/118514.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有