Skip to content
A small and flexible (well documented) UIButton subclass with animated loading progress, and completion animation.
Branch: master
Clone or download
thePsguy Merge pull request #6 from thePsguy/thePsguy-patch-2
Updated Readme with Appetize preview
Latest commit a656702 Oct 1, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Example > Updated to Swift 4.0 Feb 12, 2018
Source
.gitignore
.swift-version Version 1.0.1 Feb 12, 2018
.travis.yml
ButtonProgressBar-iOS.podspec Version 1.0.1 Feb 12, 2018
LICENSE Initial commit Apr 12, 2017
Package.swift
README.md Updated Readme with Appetize preview Oct 1, 2018
SimulatorScreenShot.png Simulator Screenshot Sep 25, 2017
output_F2Ryon.gif Add files via upload Apr 20, 2017
preview.gif v0.1.2 feat: Apr 14, 2017

README.md

ButtonProgressBar-iOS

Version License Platform Contact

GIF Preview

Example

  • 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

Requirements

iOS > 7.0

Installation

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

pod 'ButtonProgressBar-iOS'

Usage

import ButtonProgressBar_iOS

Initialize just like you would any other UIButton:

var progressButton = ButtonProgressBar(frame: CGRect)
view.addSubview(progressButton)

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.
  triggerCompletion()

Author

Pushkar Sharma, thePsguy@icloud.com


Inspiration from Dribbble

Android version available!

License

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

You can’t perform that action at this time.