Ich habe an einer ähnlichen Aufgabe gearbeitet und es gerade geschafft, dies heute umzusetzen. Ich denke, der einfachste Weg besteht darin, die aktuelle Benutzeroberfläche zu verbessern, so dass Sie nur an dem Teil arbeiten müssen, der sich mit dem Fortschrittskreis beschäftigt.
In meinem Fall erstellte ich eine neue Klasse namens "UIButtonEnhanced", die eine Unterklasse von UIButton ist.
Bitte beachten Sie, dass Sie in Ihrem Interface Builder zuerst die Klasse der Schaltfläche in "UIButtonEnhanced" ändern und dann die Steckdose erstellen sollten.
enum DownloadStatus {
case remote
case downloading
case paused
case resumed
case success
}
// MARK: extension is not ideal, a better solution should be a subclass of UIButton
class UIButtonEnhanced: UIButton {
var progress: Float = 0 {
didSet {
circleShape.strokeEnd = CGFloat(self.progress)
}
}
var circleShape = CAShapeLayer()
public func drawCircle() {
let x: CGFloat = 0.0
let y: CGFloat = 0.0
let circlePath = UIBezierPath(roundedRect: CGRect(x: x, y: y, width: self.frame.height, height: self.frame.height), cornerRadius: self.frame.height/2).cgPath
circleShape.path = circlePath
circleShape.lineWidth = 3
circleShape.strokeColor = UIColor.white.cgColor
circleShape.strokeStart = 0
circleShape.strokeEnd = 0
circleShape.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(circleShape)
}
// MARK: - Update the download status
var status: DownloadStatus = .remote {
didSet{
var buttonImageName = ""
switch self.status {
case .remote:
buttonImageName = "DownloadButton"
case .downloading:
buttonImageName = "PauseButton"
case .success:
buttonImageName = "DeleteButton"
case .paused:
buttonImageName = "DownloadButton"
case .resumed:
buttonImageName = "PauseButton"
}
self.setImage(UIImage(named: buttonImageName), for: .normal)
}
}
}
In Ihrem Viewcontroller, können Sie den Kreis mit dem folgenden Code erstellen:
yourButton.drawCircle()
Dann, wenn der Download Änderungen Fortschritt, verwenden Sie diesen Code:
yourButton.progress = 0.5
Wenn Sie Ihren Download-Status Änderungen, verwenden Sie diesen Code:
yourButton.status = .success
Sie können von Cocoascontrol finden.Verwenden Sie diesen Link als Referenz https://github.com/mrackwitz/MRProgress und https://github.com/PavelKatunin/DownloadButton –
Vielen Dank Kumpel :) – victorious
: - Ich kann Ihnen helfen u. –