上周做了一個tableview的展開折疊,好久不用,生疏好多,結果各種糾結蛋疼,效果各種不好,索性不弄了,浪了兩天之后,周一來了靈感突發,一氣呵成,效果感覺還不錯,廢話不多說,說下具體流程
1.tableview的style:UITableViewStylePlain(很重要,直接影響動畫視覺效果)
2.通過scrollview的代理控制禁止header懸停,這里就很蛋疼了(萬惡的Oc),設置成讓他懸停再禁止掉就是為了動畫的視覺效果醉了醉了下面是代碼
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView == self.tableView) { CGFloat sectionHeaderHeight = 100 * KY_Proportion; //sectionHeaderHeight if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) { scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0); } else if (scrollView.contentOffset.y>=sectionHeaderHeight) { scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0); } } }
3.這里也是為了視覺效果,上面禁止懸停實現了,可是發現tableview展開折疊的時候,footer也會懸停,因此直接將footer設置為0,在header上做了一個假的footer,哈哈哈哈哈哈哈哈
4.也很重要,進行UI和數據源操作時采用刪除和添加行的方式,動畫就是刪除向上插入向下。
Ok了,擼主寫完后看了下,tableview展開折疊很流暢,很開心有木有!!!