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]一下即可。

你可能感兴趣的:(iOS)