130 lines
4.8 KiB
Markdown
130 lines
4.8 KiB
Markdown
# 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 <DownloadButton/PKDownloadButton.h>
|
|
```
|
|
|
|
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.
|