2012-12-05 43 views
3

我實現通過使用tableHeaderView以及調整該幀在一個UITableView視差效應滾動時自動調整大小:的UITableView不會在IOS改變tableHeaderView的幀時6

headerView is the table.tableHeaderView 
topHeight = 400; // the height of the tableHeaderView 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGFloat scrollOffset = scrollView.contentOffset.y; 
    if (scrollOffset>=0 && scrollOffset<=topHeight) { 
     CGRect frame = CGRectMake(0, scrollOffset/2, 320, topHeight - scrollOffset/2); 
     headerView.frame = frame; 
    } else if (scrollOffset>topHeight) { 
     CGRect frame = CGRectMake(0, 100, 320, 100); 
     headerView.frame = frame; 
    } else { 
     CGRect frame = CGRectMake(0, 0, 320, topHeight); 
     headerView.frame = frame; 
    } 
} 

效果完美地工作在iOS 5.0和5.1,但我得到的tableHeaderView和iOS表內容之間有些奇怪空間6+(在圖像中的報頭是紅色)

的iOS 5 - 報頭和所述表的內容之間沒有空格: iOS 5 - no space between the header and the table content

iOS 6的0頭從該表內容隔開: iOS 6 0 header is spaced from the table content

+0

我試圖重新此問題 - 請你提供更多的示例代碼。什麼是headerView,哪個值具有topHeight,哪些設置具有表視圖等。 – x2on

+0

@ x2on我更新了一些更多信息的問題;沒有設置在默認值的tableView中被改變(只需拖​​放一個UITableView或一個UITableViewController)。謝謝。 – tagyro

回答

0

它看起來像頭視圖的大小是固定的初始值。也許在iOS 6上,表視圖的內部計算已經發生了變化 - 因此如果不重新加載表,視圖的高度就不能被更改。

如果您重新加載表的scrollViewDidScroll函數結束時它的工作原理(但它將是一個性能問題)。

這與操縱單元格的高度而不重新加載表格的效果相同。

1

你需要重新設置tableHeaderView:

table.tableHeaderView = table.tableHeaderView; 
相關問題