我有一個UITableView設置爲不啓用滾動,它存在於UIScrollView中。我這樣做是因爲設計規範要求的東西看起來像是一個表視圖(實際上它們並排有兩個),而且實現表格視圖要容易得多,而不是添加一大堆按鈕,(分組表格視圖)。UITableView內容高度
問題是,我需要知道滾動視圖的容器視圖有多大,所以它滾動表視圖的整個高度。一旦加載,有沒有辦法找到tableview的高度?沒有像滾動視圖,框架似乎是靜態等內容視圖屬性...
任何想法?
我有一個UITableView設置爲不啓用滾動,它存在於UIScrollView中。我這樣做是因爲設計規範要求的東西看起來像是一個表視圖(實際上它們並排有兩個),而且實現表格視圖要容易得多,而不是添加一大堆按鈕,(分組表格視圖)。UITableView內容高度
問題是,我需要知道滾動視圖的容器視圖有多大,所以它滾動表視圖的整個高度。一旦加載,有沒有辦法找到tableview的高度?沒有像滾動視圖,框架似乎是靜態等內容視圖屬性...
任何想法?
一個更通用的解決方案:
CGFloat tableViewHeight(UITableView *tableView) {
NSInteger lastSection = tableView.numberOfSections - 1;
while (lastSection >= 0 && [tableView numberOfRowsInSection:lastSection] <= 0)
lastSection--;
if (lastSection < 0)
return 0;
CGRect lastFooterRect = [tableView rectForFooterInSection:lastSection];
return lastFooterRect.origin.y + lastFooterRect.size.height;
}
除了安德烈的解決方案,它佔空段和段尾。
UITableView
是UIScrollView
一個子類,所以它有一個contentSize
屬性,你應該能夠使用沒有問題:
CGFloat tableViewContentHeight = tableView.contentSize.height;
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width, tableViewContentHeight);
然而,隨着severalother SO問題所指出的那樣,當你做一個更新到表格視圖(如插入一行),其contentSize
似乎不會立即更新,就像UIKit中大多數其他動畫調整大小一樣。在這種情況下,您可能需要訴諸於邁克爾曼納的回答。 (雖然我認爲它更有意義作爲UITableView
的類別實現)
您可以運行這些部分並使用rectForSection
來計算總高度(也包括頁腳和標題!)。在迅速我使用以下擴展UITableView
extension UITableView {
/**
Calculates the total height of the tableView that is required if you ware to display all the sections, rows, footers, headers...
*/
func contentHeight() -> CGFloat {
var height = CGFloat(0)
for sectionIndex in 0..<numberOfSections {
height += rectForSection(sectionIndex).size.height
}
return height
}
}
在這裏相同的情況。 – fatuhoku