Customizable progress indicator library in Swift
- Swift 5.1
- iOS 8.0 or later
- Preset style: BlueDarkStyle.swift
- All preset styles
- Example Use AddSubView
github "keygx/GradientCircularProgress"
pod 'GradientCircularProgress', :git => 'https://github.com/keygx/GradientCircularProgress'
- Swift 5.1, tag "swift5.1"
- Swift 5, tag "swift5"
- Swift 4.2, tag "swift4.2"
- Swift 4.1, tag "swift4.1"
- Swift 4.0, tag "swift4.0"
Please make your original styles
- Define custom style structs that implements the StyleProperty Protocol
import GradientCircularProgress
publicstructMyStyle:StyleProperty{
/*** style properties **********************************************************************************/
// Progress Size
publicvarprogressSize:CGFloat=200
// Gradient Circular
publicvararcLineWidth:CGFloat=18.0publicvarstartArcColor:UIColor=UIColor.clear()publicvarendArcColor:UIColor=UIColor.orange()
// Base Circular
publicvarbaseLineWidth:CGFloat?=19.0publicvarbaseArcColor:UIColor?=UIColor.darkGray()
// Ratio
publicvarratioLabelFont:UIFont?=UIFont(name:"Verdana-Bold", size:16.0)publicvarratioLabelFontColor:UIColor?=UIColor.white()
// Message
publicvarmessageLabelFont:UIFont?=UIFont.systemFont(ofSize:16.0)publicvarmessageLabelFontColor:UIColor?=UIColor.white()
// Background
publicvarbackgroundStyle:BackgroundStyles=.dark
// Dismiss
publicvardismissTimeInterval:Double?=0.0 // 'nil' for default setting.
/*** style properties **********************************************************************************/
publicinit(){}}import GradientCircularProgressletprogress=GradientCircularProgress()
progress.show(message:"Loading...",MyStyle())
progress.dismiss()letprogress=GradientCircularProgress()letprogressView= progress.show(frame: rect, message:"Loading...", style:MyStyle())
view.addSubview(progressView!)
progress.dismiss(progress: progressView!)letprogress=GradientCircularProgress()letratio:CGFloat=CGFloat(totalBytesWritten)/ CGFloat(totalBytesExpectedToWrite) progress.showAtRatio(style:MyStyle())
progress.updateRatio(ratio)
progress.dismiss()letprogress=GradientCircularProgress()letprogressView= progress.showAtRatio(frame: rect, display:true, style:MyStyle())
view.addSubview(progressView!)
progress.updateRatio(ratio)
progress.dismiss(progress: progressView!)letprogress=GradientCircularProgress()
progress.show(message:"Download\n0 / 4",MyStyle())
progress.updateMessage(message:"Download\n1 / 4")
progress.updateMessage(message:"Download\n2 / 4")
progress.updateMessage(message:"Download\n3 / 4")
progress.updateMessage(message:"Download\n4 / 4")
progress.updateMessage(message:"Completed!")
progress.dismiss()letprogress=GradientCircularProgress()letprogressView= progress.show(frame: rect, message:"Download\n0 / 4", style:MyStyle())
view.addSubview(progressView!)
progress.updateMessage(message:"Download\n1 / 4")
progress.updateMessage(message:"Download\n2 / 4")
progress.updateMessage(message:"Download\n3 / 4")
progress.updateMessage(message:"Download\n4 / 4")
progress.updateMessage(message:"Completed!")
progress.dismiss(progress: progressView!)publicfunc showAtRatio(display:Bool=true, style:StyleProperty=Style())
public func show(style:StyleProperty=Style())
public func show(message:String, style:StyleProperty=Style())
public func dismiss()
public func dismiss(_ completionHandler:()->Void)->()publicfunc showAtRatio(frame:CGRect, display:Bool=true, style:StyleProperty=Style())->UIView?
public func show(frame:CGRect, style:StyleProperty= Style())->UIView?
public func show(frame:CGRect, message:String, style:StyleProperty= Style())->UIView?
public func dismiss(progress view:UIView)
public func dismiss(progress view:UIView, completionHandler:()->Void)->()publicfunc updateMessage(message message:String)
public func updateRatio(_ ratio:CGFloat)Gradient Circular Progress is released under the MIT license. See LICENSE for details.
Yukihiko Kagiyama (keygx) https://twitter.com/keygx







