登录 立即注册
金钱:

Code4App-188bet注册-iOS 开源代码库-188bet官网实例搜索-iOS特效示例-188bet官网例子下载-Code4App.com

iOS自定义转子动画—OC&Swift

[复制链接]
来自: JmoVxia 分类: iOS精品源码 上传时间: 2019-3-25 00:30:51
Tag:

项目介绍:

前言开发中经常需要加载数据,这时候就需要一个加载动画,最近写了2个加载动画,希望对大家有所帮助。文章末尾有提供OC和Swift双语的CLDemo下载,代码比较简单,就不详细解析了,Demo中已经进行封装,可以直接使用,这里贴出核心代码。
1.第一个
核心代码
  1. private func initLayer() -> Void {        let origin_x: CGFloat = frame.size.width * 0.5        let origin_y: CGFloat = frame.size.height * 0.5        for item in 0 ..< defaultConfigure.number {            //创建layer            let scale: CGFloat = CGFloat(defaultConfigure.number + 1 - item) / CGFloat(defaultConfigure.number + 1)            let layer: CALayer = CALayer()            layer.backgroundColor = defaultConfigure.backgroundColor.cgColor            layer.frame = CGRect.init(x: -5000, y: -5000, width: scale * defaultConfigure.diameter, height: scale * defaultConfigure.diameter)            layer.cornerRadius = scale * defaultConfigure.diameter * 0.5;            //运动路径            let pathAnimation: CAKeyframeAnimation = CAKeyframeAnimation.init(keyPath: "position")            pathAnimation.calculationMode = .paced;            pathAnimation.fillMode = .forwards;            pathAnimation.isRemovedOnCompletion = false;            pathAnimation.duration = (defaultConfigure.duration) - Double((defaultConfigure.intervalDuration) * Double(defaultConfigure.number));            pathAnimation.beginTime = Double(item) * defaultConfigure.intervalDuration;            pathAnimation.timingFunction = CAMediaTimingFunction.init(name: .easeInEaseOut)            pathAnimation.path = UIBezierPath(arcCenter: CGPoint.init(x: origin_x, y: origin_y), radius: (self.frame.size.width - self.defaultConfigure.diameter) * 0.5, startAngle: defaultConfigure.startAngle, endAngle: defaultConfigure.endAngle, clockwise: true).cgPath            //动画组,动画组时间长于单个动画时间,会有停留效果            let group: CAAnimationGroup = CAAnimationGroup()            group.animations = [pathAnimation]            group.duration = defaultConfigure.duration            group.isRemovedOnCompletion = false            group.fillMode = .forwards            group.repeatCount = MAXFLOAT            layer.add(group, forKey: "RotateAnimation")            layerArray.append(layer)        }    }
复制代码


2.第二个
核心代码
  1. override init(frame: CGRect) {        super.init(frame: frame)        width = frame.size.width        height = frame.size.height        layer.backgroundColor = configure.outBackgroundColor.cgColor        layer.mask = shapeLayer(lineWidth: configure.outLineWidth, start: 0, end: 1)        animationLayer.frame = layer.bounds        animationLayer.backgroundColor = configure.inBackgroundColor.cgColor        animationLayer.mask = shapeLayer(lineWidth: configure.inLineWidth, start: configure.strokeStart, end: configure.strokeEnd)        layer.addSublayer(animationLayer)        rotationAnimation.fromValue = 0        rotationAnimation.toValue = Double.pi * 2        rotationAnimation.repeatCount = MAXFLOAT        rotationAnimation.duration = configure.duration        rotationAnimation.isRemovedOnCompletion = false        rotationAnimation.fillMode = .forwards        rotationAnimation.timingFunction = CAMediaTimingFunction(name: .linear)    }
复制代码


3.总结核心代码已经贴出,完整代码请查看Demo,为了方便大家学习,这里提供了OC和Swift两种语言分别实现的----->>>CLDemo,如果对你有所帮助,欢迎Star。




相关源码推荐:

我来说两句
*滑动验证:
所有评论(24)
BlueManlove 2019-3-25 09:51:20
感谢分享,code4app有你更精彩
回复
乱世佳人520 2019-3-25 09:51:30
虽不明,但觉厉...
回复
Ek645 2019-3-25 09:52:05
code4app好的内容真的很多~赞
回复
天天bug 2019-3-25 09:53:11
内容很好,棒棒哒
回复
bug是啥 2019-3-25 09:53:24
我是来学习的
回复
littleRed 2019-3-25 09:53:34
好好 学习了 确实不错
回复
code4app热心网友 2019-3-25 10:05:35
楼主用心了,内容非常精彩。
回复
chenxiaoleios 2019-3-25 10:05:48
精华内容,楼主V5!
回复
chenxiaoleios 2019-3-25 10:05:48
虽不明,但觉厉!
回复
123下一页
提取码:  下载次数:15 状态:已购或VIP 售价:0(原价:15)金钱 下载权限:初级码农 
331 1 15
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
[email protected]
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表