2012-08-04 178 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

相關問題