Inspired by Apple’s download progress buttons in the app store
Created by @pklada and @miketsprague
pod 'GBKUIButtonProgressView', git: 'https://github.com/Guidebook/gbkui-button-progress-view'
Just add the files in GBKUIButtonProgressView/
to your project
- Create the button as a custom view in your xib, or create it programatically
- Make sure that you don't have a constraint for its width (it shrinks)--you might need to set the Intrinsic Content Size to "Placeholder" in your xib to avoid errors
self.downloadButton.initialTitle = @"Download";
self.downloadButton.completeTitle = @"Open";
// Add a target (like a regular button)
[self.downloadButton addTarget:self action:@selector(downloadButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
-(void)downloadButtonPressed:(id)sender {
// Update the button's state based on your downloading item's state
if(!self.isDownloading && !self.isDownloaded) {
[self.downloadButton startProgressing];
[self downloadItem];
} else if(self.isDownloaded) {
[self openItem];
} else {
[self cancelDownloadingItem];
[self.downloadButton setProgress:0 animated:YES withCompletion:^{
[self.downloadButton reset];
}];
}
}
-(void)downloadProgressed:(CGFloat)progress {
// Update the download button's progress when you get a progress update from your item
[self.downloadButton setProgress:progress animated:YES];
}
To change the tint color, simply:
self.downloadButton.tintColor = [UIColor redColor];
See the example for more info.
- Polish the API a bit
- Allow it to be IBDesignable
- Inherit from UIControl instead of UIView