iphone - 我正在尝试将 UIActivityIndi​​catorView 置于 UITableView 的中心,但它具有最高边距

标签 iphone objective-c xcode

我在 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 未正确对齐,它有上边距并且看起来不太好。这是它的样子:

enter image description here

最佳答案

不要使用

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 - 我正在尝试将 UIActivityIndi​​catorView 置于 UITableView 的中心,但它具有最高边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050568/

相关文章:

iphone - 音频服务功能帮助

iphone - 如何在 MKMapView 中将我当前的位置居中?

iphone - "Conforms to"在 Iphone 术语中代表什么?

ios - 我得到这个 “Thread 1: signal SIGABRT”

ios - swift - loadAchievementsWithCompletionHandler

ios - 从 Plist 中检索颜色。 iOS

Javascript 在 iPhone 中不起作用

objective-c - Finder 使用哪个 NSView 来显示文件?

ios - 根据它使用的 UITableViewCell 类型更改 heightForRowAtIndexPath?

objective-c - 如何使用 NSNumberFormatter 显示货币?