Skip to content

5.2_使用UIActivityIndicatorView显示加载

什么是UIActivityIndicatorView?

当你开发iOS应用时,用户体验至关重要。想象一下,你的应用正在从网络加载数据,或者执行一个耗时的操作。如果屏幕没有任何反馈,用户可能会感到困惑甚至认为应用卡住了。这就是 UIActivityIndicatorView 发挥作用的地方! 🚀 它是一个标准的UIKit控件,用于向用户显示一个旋转的加载指示器,表明有任务正在后台进行。

它非常直观,能够有效地传达“请稍候”的信息。

创建和配置UIActivityIndicatorView

在不使用Storyboard的情况下,创建 UIActivityIndicatorView 就像创建其他任何视图一样简单。你可以在代码中实例化它,并将其添加到你的视图层级中。

  1. 实例化:

    swift
    let activityIndicator = UIActivityIndicatorView(style: .large)

    这里,.large 样式提供了一个更大的指示器,而 .medium 则更小巧。

  2. 设置位置:

    swift
    activityIndicator.center = view.center

    通常,你会希望加载指示器显示在屏幕的中央,这样用户可以清晰地看到它。

  3. 添加到视图:

    swift
    view.addSubview(activityIndicator)

    别忘了这一步,否则它不会显示出来!

  4. 隐藏时停止动画:

    swift
    activityIndicator.hidesWhenStopped = true

    这是一个非常实用的属性。当指示器停止动画时,它会自动从视图中隐藏,省去了你手动移除或设置 isHidden 的麻烦。

控制加载动画

UIActivityIndicatorView 的核心功能就是它的动画。你可以通过两个简单的方法来控制它:

  • startAnimating(): 调用此方法会启动加载指示器的旋转动画。通常在开始执行耗时任务之前调用。
  • stopAnimating(): 当任务完成时,调用此方法会停止动画。如果 hidesWhenStopped 设置为 true,指示器也会随之隐藏。

例如,当你点击一个按钮开始网络请求时:

swift
func fetchData() {
    activityIndicator.startAnimating() // 开始加载动画
    // 模拟网络请求
    DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
        self.activityIndicator.stopAnimating() // 停止加载动画
        print("数据加载完成!")
    }
}

这个例子中,我们用 DispatchQueue.main.asyncAfter 模拟了3秒的网络延迟。

最佳实践与用户体验

使用 UIActivityIndicatorView 时,有几个最佳实践可以显著提升用户体验:

  • 及时显示与隐藏: 确保在任务开始时立即显示指示器,并在任务结束时立即隐藏。延迟显示或过早隐藏都会让用户感到困惑。
  • 避免长时间显示: 如果任务需要很长时间(例如超过10-15秒),考虑提供一个进度条 (UIProgressView) 或其他更详细的反馈,而不是仅仅一个旋转的指示器。
  • 禁用用户交互: 在加载过程中,你可能希望禁用一些用户交互,例如按钮点击,以防止用户重复操作或产生意外行为。
    swift
    view.isUserInteractionEnabled = false // 禁用整个视图的交互
    // ... 任务完成后
    view.isUserInteractionEnabled = true // 重新启用交互
    这能有效避免“幽灵点击”问题。

通过遵循这些简单的指导原则,你将能够有效地利用 UIActivityIndicatorView,为你的iOS应用带来更流畅、更专业的加载体验。 🌟 你的用户一定会感谢你的细心!

本站使用 VitePress 制作