在 iOS 7 上的 UITableView 上指示加载活动的正确方法是啥?
Posted
技术标签:
【中文标题】在 iOS 7 上的 UITableView 上指示加载活动的正确方法是啥?【英文标题】:What's the proper way to indicate loading activity on UITableView on iOS 7?在 iOS 7 上的 UITableView 上指示加载活动的正确方法是什么? 【发布时间】:2013-10-31 04:55:05 【问题描述】:我知道我可以在任何时候使用SVProgressHUD
向用户展示正在整个屏幕上加载的内容。
但是,在 ios 7 设计指南中,有没有一种传统方式可以在 UITableView
内显示活动指示器或微调器。我认为 SVProgressHUD 在 iOS 7 中只是丑陋,我认为必须有更好的解决方案。
Apple 的做法是什么?
【问题讨论】:
【参考方案1】:苹果的做法是在表格视图的顶部显示活动指示器。
您可以检查 Native Mail 应用程序的工作情况。
实施 -
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
您可以使用这些方法开始/停止刷新。
--开始刷新 – 结束刷新
【讨论】:
要进一步详细说明,请查看this stack overflow question 上接受的答案,因为它提供了一个完整的示例。【参考方案2】:我也考虑了这个问题,并提出了以下解决方案:
通过利用表格视图的backgroundView
属性,您可以设置一个专用的背景视图,该视图可以按照您想要的方式设置样式。
-
在 Storyboard 中创建一个 UIViewController 并按照您想要的方式设置视图的样式。我的建议:一个 UIActivityIndicatorView 和一个 UILabel 水平和垂直居中。
为视图控制器设置故事板 ID。
在viewDidLoad
方法中粘贴以下代码,将创建的视图分配给表格视图的背景。确保将标识符替换为之前设置的任何内容。
self.tableView.backgroundView = ((UIViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"yourStoryboardID"]).view;
self.tableView.backgroundColor = [UIColor whiteColor];
当您准备好隐藏加载视图时,只需执行以下操作:
self.tableView.backgroundView.hidden = YES;
我希望这会有所帮助。
【讨论】:
来自 tableView.backgroundView 的文档:“您必须将此属性设置为 nil 才能设置表格视图的背景颜色。”以上是关于在 iOS 7 上的 UITableView 上指示加载活动的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 上的 -[UITableView layoutSublayersOfLayer:] 中的断言失败
如何阻止 UITableView 在 iOS 7 中剪辑 UITableViewCell 内容