2017-07-12 29 views
1

我儘量讓細胞展開/摺疊與下拉喜歡動漫,所以當表視圖重新計算高度,使其移動下降等細胞下面的,這就是一個抽頭,的UITableView細胞擴大動畫更改時上邊距不完全可見

但如果抽頭電池頂部幅度並不完全可見,表視圖通過移動所有以上細胞向上改變其高度更新行爲:

http://imgur.com/CldzuFf

有沒有辦法讓細胞總是以自上而下的方式展開?
重裝細胞是這樣的:

[self.tableView beginUpdates]; 
[self.tableView reloadRowsAtIndexPaths:arrayToReload withRowAnimation:UITableViewRowAnimationBottom]; 
[self.tableView endUpdates]; 
+0

什麼方法您使用的是你的「顯示更多/更少」功能?你是否在UITableViewAutomaticDimension中使用自動佈局?或者你是否返回'heightForRowAtIndexPath'中的特定值?或者你插入/刪除行? – DonMag

+0

是的,UITableViewAutomaticDimension具有開始/結束更新和行重裝,如上所示。我還會返回estimatedHeightForRow中預先計算的單元高度。插入/刪除行而不是重新加載似乎沒有區別 – szhukov

+0

確定 - 根據具體如何更改顯示/隱藏的單元格內容約束,如果不調用reloadRowsAtIndexPaths,您可能會得到更好的結果。 。你在單元格內還是在'cellForRowAtIndexPath'中操縱這些值? – DonMag

回答

0

只需設置contentOffset基礎上選定的行

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell * theCell = (UITableViewCell *)[tableView  
               cellForRowAtIndexPath:indexPath]; 

    CGPoint tableViewCenter = [tableView contentOffset]; 
    tableViewCenter.y += myTable.frame.size.height/2; 

    [tableView setContentOffset:CGPointMake(0,theCell.center.y-65) animated:YES]; // need to customize the y offset 65 to your value 
    // reload row here 
} 
+0

我沒有完全得到你的代碼,但我試着搞動畫表視圖偏移和scrollToRowAtIndexPath,但它最終與其他動畫衝突,如行重載或約束更新 – szhukov