iOS 知乎日報評論分組展開效果實現
阿新 • • 發佈:2018-12-10
參考部落格
- CGAffineTransformMakeTranslation和CGAffineTransformTranslate
- tableView.contentOffset.y
- UITableView 移動到指定的區頭位置
在仿寫知乎日報評論介面時遇到了評論分組展開的需求,如下圖:
解決思路
1. 點選section頭檢視跳轉到指定section
- 剛開始我想用CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty)解決,但很快就發現這裡是將整個tableView相對於它的superView平移指定距離,此思路遂放棄。
- 後來我想用tableView.contentOffset來設定它的內容偏移量來實現將指定section頭部跳轉到檢視頂部,但在嘗試過程中出現了計算偏移量有誤差的問題,跳轉位置不準確,問題待解決。
- 最後參考別人部落格發現了蘋果提供了方法可以直接解決這個問題(告訴我們熟悉API的重要性,瞎折騰了好久ORZ),核心程式碼如下:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1]; [self.commentsView.tabelView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
2. 分組內容收縮展開實現
- 這部分就比較好實現了,給當前Controller寫一個BOOL型別判斷分組是否展開的成員變數,在section頭檢視的點選事件中改變它的值,如果是展開狀態,tableView當前section的row返回的值數目為評論數目,收縮狀態則返回0,最後[tabelView reloadData]一下即可。