AHDownloadButton 1.3.0

AHDownloadButton 1.3.0

Amer Hukic 维护。



Logo

Pod Version Carthage compatible License Twitter: @hukicamer

AHDownloadButton 是一个可定制的下载按钮,类似于 Apple 的 App Store 应用(从 iOS 11 开始)上的下载按钮。它具有下载进度动画以及各个下载状态之间的动画转换:开始下载、待处理、正在下载和下载完成。您可以在我的博客上找到更多关于实现细节的说明(链接)

要求

  • iOS 8.0+
  • Xcode 9.0+
  • Swift 4.0+

用法

代码

要在代码中使用 AHDownloadButton,您只需创建一个新的实例并将其添加到您希望 view 的子视图中

  let downloadButton = AHDownloadButton()
  downloadButton.frame = CGRect(origin: origin, size: size)
  view.addSubview(downloadButton)

按钮可以有 4 种不同的状态

  • startDownload - 下载前的初始状态
  • pending - 准备下载的状态
  • downloading - 用户正在下载的状态
  • downloaded - 用户下载完成的状态

可以通过按钮的 state 属性改变其状态。

委托

您可以使用 AHDownloadButtonDelegate 来监听按钮的点击,并在必要时更新按钮的状态。要更新当前的下载进度,请使用 progress 属性。以下是一个示例实现:

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()

        }
    }
}

您还可以通过设置 didTapDownloadButtonActiondownloadButtonStateChangedAction 属性来使用闭包代替 AHDownloadButtonDelegate

自定义

AHDownloadButton 可进行自定义。以下是可以用于自定义按钮的属性:

  1. 使用自定义初始化器 init(alignment: HorizontalAlignment) 设置水平对齐属性。 HorizontalAlignment 决定了待办和下载圆圈的位置。位置可以是 centerleftright。默认值是 center

  2. 按钮处于 startDownload 状态时的自定义属性

  • startDownloadButtonTitle - 按钮标题
  • startDownloadButtonTitleFont - 按钮标题字体
  • startDownloadButtonTitleSidePadding - 按钮标题左右两侧的填充
  • startDownloadButtonHighlightedBackgroundColor - 按钮处于高亮状态(用户按下按钮时)的背景颜色
  • startDownloadButtonNonhighlightedBackgroundColor - 按钮处于非高亮状态(按钮未按下时)的背景颜色
  • startDownloadButtonHighlightedTitleColor - 按钮处于高亮状态(用户按下按钮时)的标题颜色
  • startDownloadButtonNonhighlightedTitleColor - 按钮处于非高亮状态(按钮未按下时)的标题颜色
  1. 按钮处于 pending 状态时的自定义属性
  • pendingCircleColor - 待办圆圈的颜色
  • pendingCircleLineWidth - 待办圆圈的线宽
  1. 按钮处于 downloading 状态时的自定义属性
  • downloadingButtonHighlightedTrackCircleColor - 轨迹圆圈处于高亮状态(用户按下按钮时)的颜色
  • downloadingButtonNonhighlightedTrackCircleColor - 轨迹圆圈处于非高亮状态(按钮未按下时)的颜色
  • downloadingButtonHighlightedProgressCircleColor - 进度圆圈处于高亮状态(用户按下按钮时)的颜色
  • downloadingButtonNonhighlightedProgressCircleColor - 进度圆圈处于非高亮状态(按钮未按下时)的颜色
  • downloadingButtonHighlightedStopViewColor - 进度圆圈中间的停止视图处于高亮状态(用户按下按钮时)的颜色
  • downloadingButtonNonhighlightedStopViewColor - 进度圆圈中间的停止视图处于非高亮状态(按钮未按下时)的颜色
  • downloadingButtonCircleLineWidth - 下载圆圈的线宽
  1. 按钮处于 downloaded 状态时的自定义属性
  • downloadedButtonTitle - 按钮标题
  • downloadedButtonTitleFont - 按钮标题字体
  • downloadedButtonTitleSidePadding - 按钮标题左右两侧的填充
  • downloadedButtonHighlightedBackgroundColor - 按钮处于高亮状态(用户按下按钮时)的背景颜色
  • downloadedButtonNonhighlightedBackgroundColor - 按钮处于非高亮状态(按钮未按下时)的背景颜色
  • downloadedButtonHighlightedTitleColor - 按钮处于高亮状态(用户按下按钮时)的标题颜色
  • downloadedButtonNonhighlightedTitleColor - 按钮处于非高亮状态(按钮未按下时)的标题颜色
  1. transitionAnimationDuration - 按钮不同状态之间的动画持续时间

特别说明

AHDownloadButtonstartDownloaddownloaded 状态下根据 按钮标题 计算宽度。使用 startDownloadButtonTitleSidePaddingdownloadedButtonTitleSidePadding 属性来自定义上述状态下的按钮宽度。

示例

要运行示例项目,首先克隆仓库,然后从示例目录运行 pod install

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它

$ gem install cocoapods

要使用 CocoaPods 将 AHDownloadButton 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'AHDownloadButton'
end

然后,运行以下命令

$ pod install

作者

Amer Hukić

许可协议

AHDownloadButton 采用 MIT 许可协议。请查阅 LICENSE 文件以获取详细信息。