All Projects → LeonardoCardoso → Nfdownloadbutton

LeonardoCardoso / Nfdownloadbutton

Licence: mit
Revamped Download Button. It's kinda a reverse engineering of Netflix's app download button.

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Nfdownloadbutton

Zwmusicdownloadview
精仿唱吧App音乐下载进度按钮,完美快速集成使用(A beautiful musical download progress button which can show the progress and click to play Music after finishing)
Stars: ✭ 88 (-79.49%)
Mutual labels:  download, button
Ahdownloadbutton
Customizable download button with progress and transition animations. It is based on Apple's App Store download button.
Stars: ✭ 370 (-13.75%)
Mutual labels:  download, button
Segmentedbutton
Segmented Control with animation for Android API 12+
Stars: ✭ 352 (-17.95%)
Mutual labels:  button
React Native Fs
Native filesystem access for react-native
Stars: ✭ 4,264 (+893.94%)
Mutual labels:  download
Squishbutton
A button that squishes when pressed. As seen in the Clips app.
Stars: ✭ 401 (-6.53%)
Mutual labels:  button
M3u8 Downloader
M3U8-Downloader 支持多线程、断点续传、加密视频下载缓存。
Stars: ✭ 369 (-13.99%)
Mutual labels:  download
Pluradl.py
Automated download of Pluralsight courses
Stars: ✭ 406 (-5.36%)
Mutual labels:  download
Mjdownload
A delightful framework for multifile resumable broken downloads.
Stars: ✭ 345 (-19.58%)
Mutual labels:  download
Easyhttp
Android 网络请求框架,简单易用,so easy
Stars: ✭ 423 (-1.4%)
Mutual labels:  download
Ytmdl Web V2
Web version of ytmdl. Allows downloading songs with metadata embedded from various sources like itunes, gaana, LastFM etc.
Stars: ✭ 398 (-7.23%)
Mutual labels:  download
Ycdownloadsession
iOS background download video or file lib
Stars: ✭ 410 (-4.43%)
Mutual labels:  download
Githubupdates
Cocoa framework to install application updates from GitHub releases.
Stars: ✭ 393 (-8.39%)
Mutual labels:  download
1click Webpage Screenshot
Entire page Screenshot extension for Google Chrome. I'm developing open source extension for Google Chrome. All extension are free for use. Let's make Chrome great again!
Stars: ✭ 406 (-5.36%)
Mutual labels:  download
Speedtest
Command line client for speedtest.net written in Go
Stars: ✭ 361 (-15.85%)
Mutual labels:  download
Submitbutton
A submit button with a fun animation for Android.
Stars: ✭ 419 (-2.33%)
Mutual labels:  button
Net
Android上强大的网络请求
Stars: ✭ 344 (-19.81%)
Mutual labels:  download
Cprogressbutton
a circle progress button like iOS
Stars: ✭ 387 (-9.79%)
Mutual labels:  download
Android Commonshapebutton
To remove all shape files from the project, provide a generic shape style button.
Stars: ✭ 404 (-5.83%)
Mutual labels:  button
Shinebutton
This is a UI lib for Android. Effects like shining.
Stars: ✭ 4,105 (+856.88%)
Mutual labels:  button
Onebutton
An Arduino library for using a single button for multiple purpose input.
Stars: ✭ 418 (-2.56%)
Mutual labels:  button

NFDownloadButton

iOS watchOS tvOS macOS

Platform CocoaPods Carthage Compatible

Revamped Download Button

Requirements

  • iOS 8.0+
  • Swift 4.2+
  • Xcode 10.0+

Installation

CocoaPods

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 NFDownloadButton 0.0.6+.

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

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'NFDownloadButton', '~> 0.0.6'

Then, run the following command:

$ pod install

Carthage

Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate NFDownloadButton into your Xcode project using Carthage, specify it in your Cartfile:

github "LeonardoCardoso/NFDownloadButton" ~> 0.0.6

Manually

If you prefer not to use either of the aforementioned dependency managers, you can integrate NFDownloadButton into your project manually.

Usage

You can use a NFDownloadButton on Storyboards or, if you want to do it programatically, you can create it just like you create a UIButton:

let downloadButton = NFDownloadButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
self.parentView.addSubview(downloadButton)

NFDownloadButton has four states:

State 1: To Download State 2: Will Download State 3: Ready to Download State 4: Downloaded
first second third fourth

You can switch between states by just doing as following:

self.downloadButton.downloadState = .toDownload || .willDownload || .readyToDownload || .downloaded

When the button is in .readyToDownload state, the button will wait for your to upload its progress. You can do it like this:

self.downloadButton.downloadPercent = 0.5

When this value reaches 1.0, then downloadState is automatically changed to .downloaded.

Downloaded by default

You can select the button as downloaded by default. All states will be overridden by Downloaded state and no animation will be performed. To do so, just add isDownloaded in its constructor, or set it up whenever you want.

NFDownloadButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50), isDownloaded: true)
downloadButton.isDownloaded = true

Style

NFDownloadButton has four different styles of devices: iOS, watchOS, tvOS, macOS. Thus you can customize your final result. This option is only available on constructor.

NFDownloadButton(frame: CGRect(x: 0, y: 0, width: 50, height: 50), isDownloaded: true,
    style: .iOS)
iOS watchOS tvOS macOS
iOS watchOS tvOS macOS

Palette

You also can customize the colors of the button on its constructor.

NFDownloadButton(
    frame: wrapView.frame,
    isDownloaded: true,
    style: .iOS,
    palette: Palette(
        initialColor: UIColor?,
        rippleColor: UIColor?,
        buttonBackgroundColor: UIColor?,
        downloadColor: UIColor?,
        deviceColor: UIColor?
    )
)

palette

Delegate

You can watch changes of state by implementing the protocol:

protocol NFDownloadButtonDelegate {

    func stateChanged(button: NFDownloadButton, newState: NFDownloadButtonState)

}

Storyboard

Last but not least, you can customize NFDownloadButton properties right from Interface Builder or Storyboards.

storyboard

License

NFDownloadButton is released under the MIT license. See LICENSE for details.

Follow me for the latest updates

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].