Xamarin.iOS 中的进度和活动指示器

应用很可能需要执行长时间运行的任务,如加载或处理数据,而这种延迟可能会导致 UI 的更新延迟。 在此期间,应始终使用进度指示器,让用户放心,知道系统正忙于处理工作。 这样可以给予用户控制感,知道应用正在处理他们的请求,而不是在等待他们的输入,同时还能详细说明他们需要等待多长时间。

iOS 提供了两种在应用中提供这种进度指示的主要方法:活动指示器(包括特定的网络活动指示器)和进度条。

活动指示器

当应用正在运行一个长时间的进程,但你不知道该任务所需的确切时长时,应显示活动指示器。

Apple 在使用活动指示器方面提出了以下建议:

  • 尽可能使用进度条 - 由于活动指示器无法向用户反馈正在运行的进程需要多长时间,所以如果已知进程的持续时间(例如,文件中要下载的字节数),则应始终使用进度条
  • 保持指示器动画效果 - 用户会将静止的活动指示器与停滞的应用联系起来,因此在显示指示器时应始终保持其动画效果
  • 描述正在处理的任务 - 仅仅显示活动指示器是不够的,用户还需要了解他们正在等待的进程。 包括一个有意义的明确定义任务的标签(通常是一个完整的句子)。

实现活动指示器

活动指示器通过 UIActivityIndictorView 类实现,以指示 UIActivity 正在进行。

管理活动指示器行为

使用 StartAnimating()StopAnimating() 方法来开始和停止活动指示器动画。

HidesWhenStopped 属性设置为 true,可使活动指示器在调用 StopAnimating() 后消失。 默认情况下,这设置为 true。 在任何时候,都可以通过查看 IsAnimating 属性来了解活动指示器是否正在运行其旋转动画。

管理活动指示器外观

实例化活动指示器时,可以将 UIActivityIndicatorViewStyle 枚举作为参数传递。 可以用它将视觉对象样式设置为 GrayWhiteWhiteLarge,例如:

activitySpinner = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge);

可以通过设置 Color 属性来替代 UIActivityIndicatorViewStyle 提供的颜色。

进度条

进度条显示为一条填满颜色的线,表示耗时任务的状态和时长。 当任务长度已知或可以计算时,应始终使用进度条。

Apple 对使用进度条有以下建议:

  • 准确报告进度 - 进度条应始终准确反映完成任务所需的时间。 切勿错报时间,使应用看起来很忙。
  • 用于定义明确的持续时间 - 进度条不仅要显示正在执行长时间任务,还要向用户显示任务完成的程度以及估计的剩余时间

实现进度条

通过实例化 UIProgressView 创建进度条

进度条和情节提要

使用 iOS 设计器时,还可以向 UI 添加进度条。 在工具箱中搜索“进度条”并将其拖动到视图中

可以在属性板上调整以下属性:

屏幕截图显示了 Properties Pad,可在其中修改样式、进度、进度色调、跟踪色调、进度图像和跟踪图像属性。

管理进度条行为

进度条的进度可以通过使用 Progress 属性进行初始设置:

ProgressBar.Progress = 0f;

可以通过使用 SetProgress 方法并传递一个布尔值来声明是否希望以动画方式显示变化,调整进度。

ProgressBar.SetProgress(1.0f, true);

有关使用进度栏的详细信息,请参阅报告进度的方案。

管理进度条外观

与活动指示器类似,UIProgressViewStyle 枚举可以在实例化进度条时作为参数传递。

进度和跟踪图像以及色调颜色可通过使用以下属性进行调整:

progressBar = new UIProgressView(UIProgressViewStyle.Default)
            {
                ProgressImage = UIImage.FromBundle("TrackImage"),
                ProgressTintColor = UIColor.Cyan,
                TrackImage = UIImage.FromBundle("TrackImage"),
                TrackTintColor = UIColor.Magenta
            };