自定義類似 App Store 的下載按鈕:DownloadButton
DownloadButton, 自定義類似 App Store 的下載按鈕。
Customizable designable components. Editing with IB.
Usage
To run the example project, clone the repo, and runpod installfrom 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];
本文由用戶 yg3n 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!