KxProgressHUD 2.0.0

KxProgressHUD 2.0.0

Kevin维护。



  • 许亚光

KxProgressHUD 是一个简洁易用的 HUD,用于在 iOS 和 tvOS 上显示正在进行的任务进度。它基于 SVProgressHUD并由 Swiftify 转换而成,增加了线程安全等功能,并且不需要编译器标志即可用于 iOS App Extension。

如果您想了解更多关于转换过程的信息,请查看文章

KxProgressHUD

Appetize.io 中尝试 KxProgressHUD

From CocoaPods

CocoaPods 是Objective-C和Swift的依赖管理器,可以自动化并简化在项目中使用第三方库(如 KxProgressHUD)的过程。首先,将以下行添加到您的 Podfile

pod 'KxProgressHUD'

若要使用 KxProgressHUD 的最新功能,请使用正常的外部源依赖项。

pod 'KxProgressHUD', :git => 'https://github.com/Swiftify-Corp/KxProgressHUD.git'

这将从 master 分支直接拉取。

其次,将 KxProgressHUD 安装到您的项目中

pod install

从 SwiftPM

在“文件”菜单下,切换到您的项目,选择“Swift Packages”,然后选择“添加依赖项”

输入您要添加的包的仓库地址。

点击“下一个”后,您将看到另一个表单。从这里,您可以指定要添加作为依赖项的哪个 版本分支提交哈希

点击“下一个”后,Xcode将会获取依赖。在这个最终的窗口中,请确保您想添加的包是被勾选的,并从下拉菜单中选择您要添加的目标。

点击完成之后,您会看到添加的包现在在导航器下的一个新的标题为“Swift Package Dependencies”的节中列出。

移除软件包

如果您需要从项目中移除SwiftPM软件包,请选中导航器顶部的项目,然后在旁边的标签上寻找标有Swift Packages的标签。它位于构建设置旁边。

用法

KxProgressHUD 以单例的形式创建(即不需要显式分配和实例化;直接调用 KxProgressHUD.method())。它可以从后台线程访问。

请明智地使用 KxProgressHUD!只有在你绝对需要在将用户向前推进之前执行任务时才使用。不良用法示例:下拉刷新、无限滚动、发送消息。

在您的应用中使用 KxProgressHUD 通常会像这样简单(使用 Grand Central Dispatch)

KxProgressHUD.show()
DispatchQueue.global(qos: .default).async(execute: {
// time-consuming task
KxProgressHUD.dismiss()
})

显示 HUD

您可以使用以下任一方法显示不确定任务的进度:

class func show()
class func show(withStatus status: String?)

如果您想使 HUD 反映任务进度,请使用以下方法之一:

class func show(progress: CGFloat)
class func show(progress: CGFloat, status: String?)

隐藏 HUD

可以使用以下方法隐藏 HUD:

class func dismiss()
class func dismissWithCompletion(_ completion: (() -> Void)?)
class func dismissWithDelay(_ delay: TimeInterval)
class func dismissWithDelay(_ delay: TimeInterval, completion: (() -> Void)?)

如果您想层叠 HUD,可以使用以下方式平衡每次显示调用:

class func popActivity()

当弹出活动调用与显示调用数量匹配时,HUD 将被隐藏。

或者,在稍后隐藏前先显示一个确认图腾。显示时间取决于 minimumDismissTimeInterval 和指定字符串的长度。

class func showInfowithStatus(_ status: String?)
class func showSuccesswithStatus(_ status: String?)
class func showError(withStatus status: String?)
class func showImage(_ image: UIImage, status: String?)

自定义

KxProgressHUD 可以通过以下方法进行自定义:

class func set(defaultStyle style: KxProgressHUDStyle) // default is KxProgressHUDStyle.light

class func set(defaultMaskType maskType: KxProgressHUDMaskType) // default is KxProgressHUDMaskType.none

class func set(defaultAnimationType type: KxProgressHUDAnimationType) // default is KxProgressHUDAnimationType.flat

class func set(containerView: UIView?) // default is window level

class func set(minimumSize: CGSize) // default is CGSize.zero, can be used to avoid resizing

class func set(ringThickness: CGFloat) // default is 2 pt

class func set(ringRadius : CGFloat) // default is 18 pt

class func setRing(noTextRingRadius radius: CGFloat) // default is 24 pt

class func set(cornerRadius: CGFloat) // default is 14 pt

class func set(borderColor color : UIColor) // default is nil

class func set(borderWidth width: CGFloat)  // default is 0

class func set(font: UIFont) // default is UIFont.preferredFont(forTextStyle: .subheadline)

class func set(foregroundColor color: UIColor) // default is nil

class func set(backgroundColor color: UIColor) // default is nil

class func set(backgroundLayerColor color: UIColor) // default is UIColor(white: 0, alpha: 0.4), only used for KxProgressHUDMaskType.custom

class func set(imageViewSize size: CGSize) // default is 28x28 pt

class func set(shouldTintImages: Bool) // default is true

class func set(infoImage image: UIImage) // default is the bundled info image provided by Freepik

class func setSuccessImage(successImage image: UIImage) // default is bundled success image from Freepik

class func setErrorImage(errorImage image: UIImage) // default is bundled error image from Freepik

class func set(viewForExtension view: UIView) // default is nil, only used for App Extension

class func set(graceTimeInterval interval: TimeInterval) // default is 5.0 seconds

class func set(maximumDismissTimeInterval interval: TimeInterval) // default is TimeInterval(CGFloat.infinity)

class func setFadeInAnimationDuration(fadeInAnimationDuration duration: TimeInterval) // default is 0.15 seconds

class func setFadeOutAnimationDuration(fadeOutAnimationDuration duration: TimeInterval) // default is 0.15 seconds

class func setMaxSupportedWindowLevel(maxSupportedWindowLevel windowLevel: UIWindow.Level) // default is UIWindowLevelNormal

class func setHapticsEnabled(hapticsEnabled: Bool) // default is NO

提示

标准的 KxProgressHUD 提供两种预设样式

  • KxProgressHUDStyle.light:白色背景,黑色旋转器和文本
  • KxProgressHUDStyle.dark:黑色背景,白色旋转器和文本

如需使用自定义颜色,请使用 setForegroundColorsetBackgroundColor:。这将隐式地将 HUD 样式设置为 KxProgressHUDStyle.custom

触觉反馈

对于拥有 newer 设备(从 iPhone 7 开始),KxProgressHUD 可以根据显示哪个 HUD 自动触发触觉反馈。反馈映射如下

  • showSuccessWithStatus: <-> UINotificationFeedbackTypeSuccess
  • showInfoWithStatus: <-> UINotificationFeedbackTypeWarning
  • showErrorWithStatus: <-> UINotificationFeedbackTypeError

要启用此功能,请使用 setHapticsEnabled:

在 iPhone 7 之前的设备的用户将不会有任何变化。

通知

KxProgressHUD 在显示/消失时会通过 NSNotificationCenter 发布四个通知

  • NotificationName.KxProgressHUDWillAppear 在显示动画开始时
  • NotificationName.KxProgressHUDDidAppear 在显示动画完成时
  • NotificationName.KxProgressHUDDidDisappear 在消失动画开始时
  • NotificationName.KxProgressHUDDidAppear 在消失动画完成时

每个通知都通过 userInfo 字典传递 HUD 的状态字符串(如果有),可通过 [NotificationName.KxProgressHUDStatusUserInfoKey.getNotificationName()] 获取。

KxProgressHUD 还在用户触摸整体屏幕时发布 KxProgressHUDDidReceiveTouchEvent,或在用户直接触摸 HUD 时发布 KxProgressHUDDidTouchDownInside。对于这些通知,不传递 userInfo,但对象参数包含与触摸相关的 UIEvent

应用程序扩展

在应用程序扩展中使用KxProgressHUD时,使用class func set(viewForExtension view: UIView)不需要设置任何编译器标志。

为此项目做出贡献

如果您有功能请求或错误报告,请通过发送拉取请求或通过创建新的issue来帮助。请花一点时间查看由Nicolas Gallagher编写的指南。

许可

KxProgressHUD是在MIT许可条款和条件下分发的。成功、错误和信息图标由FreepikFlaticon制作,并按Creative Commons BY 3.0许可。

致谢

KxProgressHUD 是由 Md Ibrahim Hassan项目贡献者 提供的。如果您在项目中使用了 KxProgressHUD,请注意署名。该项目得到了 Swiftify 的帮助。