作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Snow Leopard 上使用 Xcode 4.2。我正在尝试做什么。基本上,我有一个带有 TableView 的主视图 Controller 。为了填充表格 View ,我需要调用 API 并从那里下载信息。
从 API 下载数据时,我想显示一个事件指示器,以便让用户知道发生了什么事情并且应用程序没有卡住。
我所做的是在表格 View 上创建了一个新的 UIView,alpha 值为 0.5,并在其中间放置了一个事件指示器。这是我在主 Controller View 加载时执行的代码:
// Show the activity indicator
self.overlayView = [[UIView alloc] init];
self.overlayView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
self.overlayView.frame = self.tableView.frame;
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
CGRect frame = self.overlayView.frame;
self.activityIndicator.center = CGPointMake(frame.size.width/2, frame.size.height/2);
[self.overlayView addSubview:self.activityIndicator];
[self.activityIndicator startAnimating];
[self.tableView addSubview:self.overlayView];
当从 API 加载数据时,我隐藏叠加 View 和事件指示器:
[self.activityIndicator removeFromSuperview];
[self.overlayView removeFromSuperview];
它工作正常,但问题是叠加 View 未正确对齐,它有上边距并且看起来不太好。这是它的样子:
最佳答案
不要使用
self.overlayView.frame = self.tableView.frame;
改为使用
self.overlayView.frame = self.tableView.bounds;
看起来你的 tableView 有 origin.y = 20.0f;
UIView 的指定初始化器是 initWithFrame:
所以你应该使用它。
你可以简单的这样
self.activityIndicator.center = CGPointMake(frame.size.width/2, frame.size.height/2);
到
self.activityIndicator.center = self.overlayView.center;
关于iphone - 我正在尝试将 UIActivityIndicatorView 置于 UITableView 的中心,但它具有最高边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050568/
我是一名优秀的程序员,十分优秀!