[IM] iOS 列表下拉加载更多,不跳跃

3,192 阅读1分钟

效果

对,就是简单的下拉加载更多

实现

这里给出了答案

简单点就是,使用旋转CGAffineTransformMakeRotation

  • 旋转下UICollectionViewUICollectionViewCell,还有滚动条
// UITableView也是如此
collectionView.transform = CGAffineTransformMakeRotation(-M_PI);
collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, collectionView.bounds.size.width - 8.0);// 8 就是滚动条的宽度,好像比实际大一点
  • 和原答案有一点不同,使用IGListKit时,务必在创建Cell时旋转,不然最新的一条数据老是不能旋转,但使用UITableView是没有这个问题的
// 从Xib或Storyboard创建
- (void)awakeFromNib{
    [super awakeFromNib];
    self.contentView.transform = CGAffineTransformMakeRotation(-M_PI);
}

//或手动创建
- (instancetype)initWithFrame:(CGRect)frame{
    if (self = [super initWithFrame:frame]) {
        self.contentView.transform = CGAffineTransformMakeRotation(-M_PI);
    }
    return self;
}
  • 旋转后,下拉刷新使用MJRefreshAutoNormalFooter(因为旋转了180度)
  • 最后就是刷新,使用IGListKit可以做到局部刷新,如果使用reloadData是会跳跃的,因为它刷新了整个列表。

好了,唯一的不熟悉的大概就是IGListKit,不过相信聪明如你,这个IGListKit 教程还不是分分钟的事。

弯路

经历过复制粘贴的Baidu,你大概只能搜索到千篇一律的scrollRectToVisiblescrollToItemAtIndexPath。不太聪明的我,都试过,都会跳跃,而且很复杂。

没事多上stackoverflow,遇到这个问题的时候,我开始也不知道怎么搜索,最后我也想到旋转,就搜索iOS tableview reverse,没想到还真有

惯例

这个是我写的demo