Music_Player3/MusicPlayer/MP/Common/Tool(工具封装)/MP_CircularProgressView.swift
2024-05-20 13:44:14 +08:00

56 lines
1.6 KiB
Swift

//
// MP_CircularProgressView.swift
// MusicPlayer
//
// Created by 16 on 2024/5/14.
//
import Foundation
import UIKit
class CircularProgressView: UIView {
private var progressLayer = CAShapeLayer()
private var trackLayer = CAShapeLayer()
private var progress: CGFloat = 0 {
didSet {
progressLayer.strokeEnd = progress
}
}
override init(frame: CGRect) {
super.init(frame: frame)
setupLayers()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupLayers()
}
private func setupLayers() {
// Track layer (background circle)
let center = CGPoint(x: bounds.width / 2, y: bounds.height / 2)
let circularPath = UIBezierPath(arcCenter: center, radius: bounds.width / 2, startAngle: -CGFloat.pi / 2, endAngle: 3 * CGFloat.pi / 2, clockwise: true)
trackLayer.path = circularPath.cgPath
trackLayer.strokeColor = UIColor.lightGray.cgColor
trackLayer.lineWidth = 3
trackLayer.fillColor = UIColor.clear.cgColor
layer.addSublayer(trackLayer)
// Progress layer (foreground circle)
progressLayer.path = circularPath.cgPath
progressLayer.strokeColor = UIColor.green.cgColor
progressLayer.lineWidth = 3
progressLayer.fillColor = UIColor.clear.cgColor
progressLayer.lineCap = .round
progressLayer.strokeEnd = 0
layer.addSublayer(progressLayer)
}
func setProgress(to progress: CGFloat) {
self.progress = progress
}
}