by thePsguy

A small and flexible (well documented) UIButton subclass with animated loading progress, and comple...

467 Stars 36 Forks Last release: over 2 years ago (1.0.1) MIT License 31 Commits 5 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


Version License Platform Contact

GIF Preview


  • For LIVE PREVIEW on Appetize in your browser itself, click here.

  • To run the example project, clone the repo, and run

    pod install
    from the Example directory first.

Simulator Screen           GIF Preview


iOS > 7.0


ButtonProgressBar-iOS is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'ButtonProgressBar-iOS'


import ButtonProgressBar_iOS

Initialize just like you would any other UIButton:

var progressButton = ButtonProgressBar(frame: CGRect)

Since this is a UIButton subclass, targets and labels can be set in the same way:

progressButton.addTarget(nil, action: #selector(self.tapped), for: .touchUpInside)
progressButton.setTitle("Download", for: .normal)

The completion image can be set with;

This image must be set since no default exists.

  setCompletionImage(image: UIImage)

Indeterminate loading can be handled with the following functions:

startIndeterminate(withTimePeriod time: TimeInterval)
startIndeterminate(withTimePeriod time: TimeInterval, andTimePadding padding: TimeInterval)

/* Time Padding is the duration (default 0.5), in seconds, before starting the next cycle. Time Period is the total time (animation + padding) that 1 cycle of the loading takes. */

stopIndeterminate() //Stops the indeterminate loading.

For determinate usage or otherwise, progress can be set with:

setProgress(progress: CGFloat, _ animated: Bool) 
Progress ranges from 0.0 to 1.0

If animated is true, linearly animates to progress. */

resetProgress() //Set progress to 0.0 unanimated.

Set the progress and background colors:

setBackgroundColor(color: UIColor)
setProgressColor(color: UIColor)

To explicitly show/hide the title / image:

hideTitle(_ hidden: Bool)
hideImage(_ hidden: Bool)

Stop indeterminate loading if active, set progress to 1.0 animated, and display completion image if set.

 Needs to be called explicitly when loading determinate as well.


Pushkar Sharma, [email protected]

Inspiration from Dribbble

Android version available!


ButtonProgressBar-iOS is available under the MIT license. See the LICENSE file for more info.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.