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

 更新时间:2020年10月20日 16:46:36   作者:CuiXg  
这篇文章主要为大家详细介绍了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.

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

相关文章

  • 如何为Xcode添加删除整行、复制整行及在下方新建一行快捷键详解

    如何为Xcode添加删除整行、复制整行及在下方新建一行快捷键详解

    xcode是苹果公司向开发人员提供的集成开发环境,开发者们经常会使用到,下面这篇文章主要给大家介绍了关于如何为Xcode添加删除整行、复制整行及在下方新建一行快捷键的相关资料,需要的朋友可以参考下。
    2018-04-04
  • iOS系统缓存方面开发的相关基础

    iOS系统缓存方面开发的相关基础

    这篇文章主要介绍了iOS系统缓存方面开发的相关基础,示例代码基于传统的Objective-C,需要的朋友可以参考下
    2015-10-10
  • iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例

    iOS实现时间显示几分钟前,几小时前以及刚刚的方法示例

    这篇文章主要介绍了如何利用iOS实现时间显示是在几小时前,几分钟前以及刚刚的格式,类似大家在qq空间和朋友圈微博看到的效果,文中给出了详细的示例代码,有需要的朋友们可以参考借鉴,下面来一起学习学习吧。
    2017-01-01
  • IOS实现选择城市后跳转Tabbar效果

    IOS实现选择城市后跳转Tabbar效果

    这篇文章主要为大家详细介绍了IOS实现选择城市后跳转Tabbar效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • iOS NSCache和NSUrlCache缓存类实现示例详解

    iOS NSCache和NSUrlCache缓存类实现示例详解

    这篇文章主要为大家介绍了iOS NSCache和NSUrlCache缓存类实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • iOS 无卡顿同时使用圆角、阴影和边框的实现

    iOS 无卡顿同时使用圆角、阴影和边框的实现

    这篇文章主要介绍了iOS 无卡顿同时使用圆角、阴影和边框的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 详解iOS多线程GCD问题

    详解iOS多线程GCD问题

    本篇文章主要介绍了iOS多线程GCD问题,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • IOS中对Url进行编码和解码示例

    IOS中对Url进行编码和解码示例

    本篇文章主要介绍了IOS中对Url进行编码和解码示例,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • WKWebview非全屏自动播放h5视频的实现方法(Swift、OC)

    WKWebview非全屏自动播放h5视频的实现方法(Swift、OC)

    这篇文章主要给大家介绍了关于WKWebview非全屏自动播放h5视频的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • iOS实现简单计算器功能

    iOS实现简单计算器功能

    这篇文章主要为大家详细介绍了iOS实现简单计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论