您的位置:首页 > 移动开发 > IOS开发

iOS 实现加载转圈效果

2017-07-13 11:36 951 查看
1、思路:

新建一个view,添加shape,给予一个动画实现。

2、效果图:

[b]

//
//  YJDownloadingCircle.swift
//  k12_sl_iOS
//
//  Created by liyajun on 2017/7/13.
//
//

import UIKit

class YJDownloadingCircle: UIView {

var loadingLayer:CAShapeLayer! = nil

override init(frame: CGRect) {
super.init(frame: frame)

initViews()
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initViews()

}

override func awakeFromNib() {
initViews()
}

func initViews() {
backgroundColor = UIColor.white
}

func drawHalfCircle() {
loadingLayer = self.drawCircle()

loadingLayer.strokeStart = 0.0
loadingLayer.strokeEnd = 0.75

let basicAni = CABasicAnimation(keyPath: "transform.rotation.z")
basicAni.fromValue = 0.0
basicAni.toValue = M_PI*2
basicAni.duration = 0.5
basicAni.repeatCount = MAXFLOAT
basicAni.autoreverses = false
basicAni.fillMode = kCAFillModeForwards
self.layer.add(basicAni, forKey: nil)

}

private func drawCircle() -> CAShapeLayer {

let circleLayer = CAShapeLayer()
let rect = CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height)
circleLayer.frame = rect
circleLayer.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height/2)
circleLayer.fillColor = UIColor.clear.cgColor
circleLayer.lineWidth = 1
circleLayer.strokeColor = UIColor.colorWithHex(hex: "FF3B30").cgColor
let bezier = UIBezierPath(ovalIn: rect)
circleLayer.path = bezier.cgPath
self.layer.addSublayer(circleLayer)

return circleLayer

}
}


View Code
只有一个类文件(UIView),使用时直接拷贝即可。

其中,关于转圈的前景色、背景色等参数,我没提出来,大家如果有这需求,可以改一下。

代码是Swift实现加载转圈效果。

如果是OC,参考代码思路即可。

enjoy~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: