Xamarin.iOS 中的进度和活动指示器
应用很可能需要执行长时间运行的任务,如加载或处理数据,而这种延迟可能会导致 UI 的更新延迟。 在此期间,应始终使用进度指示器,让用户放心,知道系统正忙于处理工作。 这样可以给予用户控制感,知道应用正在处理他们的请求,而不是在等待他们的输入,同时还能详细说明他们需要等待多长时间。
iOS 提供了两种在应用中提供这种进度指示的主要方法:活动指示器(包括特定的网络活动指示器)和进度条。
活动指示器
当应用正在运行一个长时间的进程,但你不知道该任务所需的确切时长时,应显示活动指示器。
Apple 在使用活动指示器方面提出了以下建议:
- 尽可能使用进度条 - 由于活动指示器无法向用户反馈正在运行的进程需要多长时间,所以如果已知进程的持续时间(例如,文件中要下载的字节数),则应始终使用进度条。
- 保持指示器动画效果 - 用户会将静止的活动指示器与停滞的应用联系起来,因此在显示指示器时应始终保持其动画效果。
- 描述正在处理的任务 - 仅仅显示活动指示器是不够的,用户还需要了解他们正在等待的进程。 包括一个有意义的明确定义任务的标签(通常是一个完整的句子)。
实现活动指示器
活动指示器通过 UIActivityIndictorView
类实现,以指示 UIActivity
正在进行。
管理活动指示器行为
使用 StartAnimating()
和 StopAnimating()
方法来开始和停止活动指示器动画。
将 HidesWhenStopped
属性设置为 true
,可使活动指示器在调用 StopAnimating()
后消失。 默认情况下,这设置为 true
。 在任何时候,都可以通过查看 IsAnimating
属性来了解活动指示器是否正在运行其旋转动画。
管理活动指示器外观
实例化活动指示器时,可以将 UIActivityIndicatorViewStyle
枚举作为参数传递。 可以用它将视觉对象样式设置为 Gray
、White
或 WhiteLarge
,例如:
activitySpinner = new UIActivityIndicatorView(UIActivityIndicatorViewStyle.WhiteLarge);
可以通过设置 Color
属性来替代 UIActivityIndicatorViewStyle
提供的颜色。
进度条
进度条显示为一条填满颜色的线,表示耗时任务的状态和时长。 当任务长度已知或可以计算时,应始终使用进度条。
Apple 对使用进度条有以下建议:
- 准确报告进度 - 进度条应始终准确反映完成任务所需的时间。 切勿错报时间,使应用看起来很忙。
- 用于定义明确的持续时间 - 进度条不仅要显示正在执行长时间任务,还要向用户显示任务完成的程度以及估计的剩余时间。
实现进度条
通过实例化 UIProgressView
创建进度条
进度条和情节提要
使用 iOS 设计器时,还可以向 UI 添加进度条。 在工具箱中搜索“进度条”并将其拖动到视图中。
可以在属性板上调整以下属性:
管理进度条行为
进度条的进度可以通过使用 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
};