IHProgressHUD 0.1.4

IHProgressHUD 0.1.4

Md Ibrahim Hassan 维护。



IHProgressHUD

Pod Version Pod Platform Pod License CocoaPods compatible

IHProgressHUD 是一个干净、易于使用的 HUD,旨在显示 iOS 和 tvOS 上的任务进度。

IHProgressHUD

演示

Appetize.io 上尝试 IHProgressHUD

安装

从 CocoaPods 安装

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

pod 'IHProgressHUD'

如果您想使用 IHProgressHUD 的最新功能,请使用正常的外部源依赖项。

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

这直接从 master 分支获取。

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

pod install

Carthage

目前不可用,但很快就会提供。

手动操作

  • 请将 IHProgressHUD/IHProgressHUD 文件夹拖入您的项目。
  • 请注意,确保 IHProgressHUD.bundle 已经添加到 Target->编译阶段->复制Bundle资源
  • QuartzCore 框架添加到您的项目。

使用方法

(详见 /Demo 中的示例 Xcode 项目)

IHProgressHUD 被作为一个单例创建(即不需要显式分配和实例化;您可以直接调用 IHProgressHUD.method())。它甚至可以在后台线程中访问。

请明智地使用 IHProgressHUD!只有在绝对需要执行任务以将用户推进下一步时才使用。不良的使用案例:下拉刷新,无限滚动,发送消息。

在您的应用中使用 IHProgressHUD 通常如下所示(使用 Grand Central Dispatch)

IHProgressHUD.show()
DispatchQueue.global(qos: .default).async(execute: {
// time-consuming task
IHProgressHUD.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()

当 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?)

自定义

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

class func set(defaultStyle style: IHProgressHUDStyle) // default is IHProgressHUDStyle.light
class func set(defaultMaskType maskType: IHProgressHUDMaskType) // default is IHProgressHUDMaskType.none
class func set(defaultAnimationType type: IHProgressHUDAnimationType) // default is IHProgressHUDAnimationType.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.init(white: 0, alpha: 0.4), only used for IHProgressHUDMaskType.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 Extensions
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

提示

作为标准功能,IHProgressHUD提供了两种预配置样式

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

如果您想使用自定义颜色,请使用setForegroundColorsetBackgroundColor:。这些会隐式地将HUD的风格设置为IHProgressHUDStyle.custom

触觉反馈

对于使用较新设备(从iPhone 7开始)的用户,IHProgressHUD可以根据显示的HUD自动触发触觉反馈。反馈映射如下

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

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

iPhone 7之前设备的用户不会看到任何功能变化。

通知

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

  • NotificationName.IHProgressHUDWillAppear当显示动画开始时
  • NotificationName.IHProgressHUDDidAppear当显示动画完成时
  • NotificationName.IHProgressHUDDidDisappear当消失动画开始时
  • NotificationName.IHProgressHUDDidDisappear当消失动画完成时

每个通知都会传递一个包含HUD的状态字符串(如果有)的userInfo字典,可通过[NotificationName.IHProgressHUDStatusUserInfoKey.getNotificationName()]检索。

IHProgressHUD当用户点击整体屏幕时,也会发布IHProgressHUDDidReceiveTouchEvent,当用户直接点击HUD时,则会发布IHProgressHUDDidTouchDownInside。对于这些通知,userInfo不会被传递,但对象参数包含了与触摸相关的UIEvent

应用扩展

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

为这个项目贡献力量

如果您有特性请求或错误报告,请通过发送pull请求或者创建新问题来帮助。请花点时间审查Nicolas Gallagher编写的指南

许可证

IHProgressHUD遵循MIT许可证的条款和条件。成功、错误和info图标由FreepikFlaticon制作,并许可在Creative Commons BY 3.0下。

致谢

IHProgressHUDMd Ibrahim Hassan提供。如果您在项目中使用了IHProgressHUD,则非常感谢您提供归属证明。此项目使用Swiftify进行转换。