1. 程式人生 > >iOS 知乎日報評論分組展開效果實現

iOS 知乎日報評論分組展開效果實現

參考部落格

  1. CGAffineTransformMakeTranslation和CGAffineTransformTranslate
  2. tableView.contentOffset.y
  3. UITableView 移動到指定的區頭位置

在仿寫知乎日報評論介面時遇到了評論分組展開的需求,如下圖:在這裡插入圖片描述

解決思路

1. 點選section頭檢視跳轉到指定section

  1. 剛開始我想用CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty)解決,但很快就發現這裡是將整個tableView相對於它的superView平移指定距離,此思路遂放棄。
  2. 後來我想用tableView.contentOffset來設定它的內容偏移量來實現將指定section頭部跳轉到檢視頂部,但在嘗試過程中出現了計算偏移量有誤差的問題,跳轉位置不準確,問題待解決。
  3. 最後參考別人部落格發現了蘋果提供了方法可以直接解決這個問題(告訴我們熟悉API的重要性,瞎折騰了好久ORZ),核心程式碼如下:
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1]; [self.commentsView.tabelView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];

2. 分組內容收縮展開實現

  1. 這部分就比較好實現了,給當前Controller寫一個BOOL型別判斷分組是否展開的成員變數,在section頭檢視的點選事件中改變它的值,如果是展開狀態,tableView當前section的row返回的值數目為評論數目,收縮狀態則返回0,最後[tabelView reloadData]一下即可。