A simple animated progress bar in Swift
Swift Ruby Objective-C
Latest commit 1520933 Feb 21, 2017 @iabtyagi iabtyagi committed on GitHub Added twitter link



Swift Version License CocoaPods Compatible Platform


DSGradientProgressView is a simple and customizable animated progress bar written in Swift.

Inspired by GradientProgressView.


Demo gif

The gif looks flickery, but the actual animation on device will not be.


Simply drop a UIView into your View Controller in the Storyboard. Select your view and, in the Identity Inspector, change the class to DSGradientProgressView.

Don't forget to change the module to DSGradientProgressView too.

Demo set class

Size the view according to your needs. (A 3px height looks great in most cases).

Import DSGradientProgressView in your view controller source file.

import DSGradientProgressView

Create an IBOutlet of the view in your view controller source file.

@IBOutlet weak var progressView: DSGradientProgressView!


You can change the base color of the progress bar. There are two ways to do this:

  • By setting the barColor property of the view object in your source file.
progressView.barColor = UIColor.green
  • Changing the Bar Color property in Storyboard itself.

Demo color picker


DSGradientProgressView is designed to keep track of the number of requests waiting for completion. Hence the api's are named after semaphore method names. You call the wait() method of the DSGradientProgressView to start animating and signal() method to stop. It hides and un-hides itself accordingly.

  // waiting for some resource

So, if your View Controller is waiting for more than one network request (or any other resource) and you want the Progress Bar to animate until all the requests are over, you can do that by simply calling wait() that number of times. Later, call signal() the same number of times.

  // waiting for some resource asynchronously
ResourceOne.sharedInstance.fetchData { (data, error) in

  // waiting for another resource asynchronously
ResourceTwo.sharedInstance.fetchData { (data, error) in


CocoaPods (Recommended)

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

CocoaPods 1.1.0+ is required to build DSGradientProgressView 1.0.0+.

To integrate DSGradientProgressView into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'

target '<Your Target Name>' do
    pod 'DSGradientProgressView'

Then, run the following command:

$ pod install


Copy the DSGradientProgressView.swift to your Xcode project. That should do it.


  • iOS 8.0+
  • Xcode 8.1+
  • Swift 3.0+