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

2025-05-29 0 18

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

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

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

startRotating

?

1

2

3

4

5

6

7

8

9

10

11
/// 开始动画

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

?

1

2

3

4

5

6

7

8

9

10

11

12
/// 停止动画

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26
/// 继续动画

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.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 iOS实现音乐播放器图片旋转 https://www.kuaiidc.com/89258.html

相关文章

发表评论
暂无评论