Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PavelKatunin/DownloadButton

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

47 Commits

Repository files navigation

DownloadButton

[![CI Status](http://img.shields.io/travis/Pavel Katunin/DownloadButton.svg?style=flat)](https://travis-ci.org/Pavel Katunin/DownloadButton) Version License Platform

Customizable appstore style download button.

Default button animation

Default button

Customizable designable components. Editing with IB.

Custom button animation

Custom button

Designable button

Usage

To run the example project, clone the repo, and run pod install from the Example directory first. Check example project to see usage.

#import <DownloadButton/PKDownloadButton.h>

Usage for representing network operations:

#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:

#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. To install it, simply add the following line to your Podfile:

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.

AltStyle によって変換されたページ (->オリジナル) /