2012-08-04 78 views
1

我一直在试图实施本教程一个UITableView的重叠活动的指标如何获得的“全屏” UITableView的边界 - http://www.markbetz.net/2010/09/30/ios-diary-showing-an-activity-spinner-over-a-uitableview/加载内容之前

这可能是有点老,但它似乎工作以及除了与界限有点问题,在显示叠加

我试图在这里得到这些边界:

-(void)showActivityView { 
    if (overlayController == nil) { 
     // This is where I get the wrong bounds 
     overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.bounds]; 
    } 
    [self.tableView insertSubview:overlayController.view aboveSubview:self.tableView]; 
} 

而且这得到了界限,完美显示我的叠加,如果我调用方法后表被加载和fi如果我在它出现错误的界限之前调用它。我已经尝试获取tableView.superView的界限,但这只是在左上角显示覆盖。

我明白这是因为UITableView在加载前没有包含任何单元,所以没有合适的边界,但我不知道如何获得这些。

错误显示:

enter image description here

正确的(但装表后)显示:

enter image description here

回答

0

如何使用的UITableView的 “框架” 的属性,而不是 “界限”?如果在XIB中定义了表格视图,则在将单元格加载到表格之前,框架应该已经很好。所以,你会需要更换:

overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.bounds]; 

有:

overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.frame]; 
+0

这显示与我的第一个截图相同,但在顶部有一个小间距。我正在使用故事板,但是在那里将内容定义为动态原型 – GMBrian 2012-08-04 12:04:19

+0

为什么不将活动指标放在整个视图上,或者更好地放在应用程序的keyWindow上?我会推荐使用诸如MBProgressHUD之类的元素 - 它看起来不错,使用起来很简单,而且工作正常。 – Stavash 2012-08-04 12:09:27

+0

感谢您提供MBProgressHUD,它看起来更好,更容易实现。 – GMBrian 2012-08-06 12:25:42

0

根据实例链接,你应该做

-(void)showActivityView { 
    if (overlayController == nil) { 
     // This is where I get the wrong bounds 
     overlayController = [[ActivityOverlayController alloc] initWithFrame:self.tableView.superview.bounds]; 
    } 
    [self.tableView.superview insertSubview:overlayController.view aboveSubview:self.tableView]; 
} 

你为什么要这么做[self.tableView insertSubview:..]而不是[self.tableView.superview insertSubview:..]

+0

对不起,迟到的反应。这给了我更好的结果,然后用superview(superview也没有工作)。我认为这是因为这个例子使用了一个在另一个视图中有一个tableview的.xib,并且我正在storyboard中使用一个tableviewcontroller。无论如何,我正在寻找一种不同的方法(更友好)来显示加载。感谢您试图帮助! – GMBrian 2012-08-06 12:21:51

相关问题