https://github.com/PavelKatunin/DownloadButton
Customizable App Store style download button
https://github.com/PavelKatunin/DownloadButton
button buttons cocoapod customizable downloadbutton ios ios-animation uikit
Last synced: 9 months ago
JSON representation
Customizable App Store style download button
- Host: GitHub
- URL: https://github.com/PavelKatunin/DownloadButton
- Owner: PavelKatunin
- License: other
- Created: 2015-06-01T18:23:58.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2020-12-02T17:18:32.000Z (about 5 years ago)
- Last Synced: 2025-04-03T07:18:22.744Z (9 months ago)
- Topics: button, buttons, cocoapod, customizable, downloadbutton, ios, ios-animation, uikit
- Language: Objective-C
- Homepage: http://pavelkatunin.github.io/DownloadButton
- Size: 648 KB
- Stars: 1,524
- Watchers: 50
- Forks: 183
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DownloadButton
[](https://travis-ci.org/Pavel Katunin/DownloadButton)
[](http://cocoapods.org/pods/DownloadButton)
[](http://cocoapods.org/pods/DownloadButton)
[](http://cocoapods.org/pods/DownloadButton)
Customizable appstore style download button.


Customizable designable components. Editing with IB.



## Usage
To run the example project, clone the repo, and run `pod install` from the Example directory first.
Check example project to see usage.
```objective-c
#import
```
Usage for representing network operations:
```objective-c
#pragma mark - PKDownloadButtonDelegate
- (void)downloadButtonTapped:(PKDownloadButton *)downloadButton
currentState:(PKDownloadButtonState)state {
switch (state) {
case kPKDownloadButtonState_StartDownload:
self.downloadButton.state = kPKDownloadButtonState_Pending;
[self.pendingSimulator startDownload];
break;
case kPKDownloadButtonState_Pending:
[self.pendingSimulator cancelDownload];
self.downloadButton.state = kPKDownloadButtonState_StartDownload;
break;
case kPKDownloadButtonState_Downloading:
[self.downloaderSimulator cancelDownload];
self.downloadButton.state = kPKDownloadButtonState_StartDownload;
break;
case kPKDownloadButtonState_Downloaded:
self.downloadButton.state = kPKDownloadButtonState_StartDownload;
self.imageView.hidden = YES;
break;
default:
NSAssert(NO, @"unsupported state");
break;
}
}
#pragma mark - DownloaderSimulatorDelegate
- (void)simulator:(PKDownloaderSimulator *)simulator didUpdateProgress:(double)progress {
if (simulator == self.pendingSimulator) {
if (progress == 1.) {
self.downloadButton.state = kPKDownloadButtonState_Downloading;
[self.downloaderSimulator startDownload];
}
}
else if (simulator == self.downloaderSimulator) {
self.downloadButton.stopDownloadButton.progress = progress;
if (progress == 1) {
self.downloadButton.state = kPKDownloadButtonState_Downloaded;
self.imageView.hidden = NO;
}
}
}
```
Appearance customization:
```objective-c
#import "UIImage+PKDownloadButton.h"
#import "UIButton+PKDownloadButton.h"
[self.downloadButton.downloadedButton cleanDefaultAppearance];
[self.downloadButton.downloadedButton setBackgroundImage:[UIImage buttonBackgroundWithColor:[UIColor redColor]]
forState:UIControlStateNormal];
[self.downloadButton.downloadedButton setBackgroundImage:[UIImage highlitedButtonBackgroundWithColor:[UIColor redColor]]
forState:UIControlStateHighlighted];
[self.downloadButton.downloadedButton setTitle:@"delete" forState:UIControlStateNormal];
[self.downloadButton.downloadedButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[self.downloadButton.downloadedButton setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
self.downloadButton.stopDownloadButton.tintColor = [UIColor blackColor];
self.downloadButton.stopDownloadButton.filledLineStyleOuter = YES;
self.downloadButton.pendingView.tintColor = [UIColor orangeColor];
self.downloadButton.pendingView.radius = 24.f;
self.downloadButton.pendingView.emptyLineRadians = 2.f;
self.downloadButton.pendingView.spinTime = 3.f;
[self.downloadButton.startDownloadButton cleanDefaultAppearance];
[self.downloadButton.startDownloadButton setImage:[UIImage imageNamed:@"download_default"] forState:UIControlStateNormal];
```
## Requirements
Requires iOS SDK version > 8.0
## Installation
DownloadButton is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
pod "DownloadButton"
```
## Author
Pavel Katunin, wk.katunin@gmail.com
## License
DownloadButton is available under the Apache License, Version 2.0. See the LICENSE file for more info.