AHDownloadButton — кнопка загрузки, как в Apple App Store (начиная с iOS 11). С анимацией загрузки, переходами между состояниями (начало, ожидание, загрузка и скачанный файл), массой настроек.
Пример использования:
let downloadButton = AHDownloadButton() downloadButton.frame = CGRect(origin: origin, size: size) view.addSubview(downloadButton)
Делегат:
extension DownloadViewController: AHDownloadButtonDelegate { func downloadButton(_ downloadButton: AHDownloadButton, tappedWithState state: AHDownloadButton.State) switch state { case .startDownload: // set the download progress to 0 downloadButton.progress = 0 // change state to pending and wait for download to start downloadButton.state = .pending // initiate download and update state to .downloading startDownloadingFile() case .pending: // button tapped while in pending state break case .downloading: // button tapped while in downloading state - stop downloading downloadButton.progress = 0 downloadButton.state = .startDownload case .downloaded: // file is downloaded and can be opened openDownloadedFile() } } }