iOS 知乎日报评论分组展开效果实现
参考博客
- 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]一下即可。