你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

使用三个视图实现无限轮播刷新某个视图,要先将该视图放置到重用池中

2021/12/26 13:39:16

原理

这里无限轮播是支持展示不同样式的view的,所以有了重阳池,就是说当前的view和下一个view是有可能不是同一个类型的view,所以刷新某个视图的时候,不能保证刷新前和刷新后需要展示的是同一种类型的view,这时候就需要将刷新前的view放到重用池中,然后通过数据获取将要展示的视图类型

代码


- (void)reloadLeftCell
{
    NSInteger count = self.numberOfLoopView;
    NSInteger leftIndex = self.currentIndex - 1;
    if (leftIndex < 0) {
        ///如果是负数,说明当前中间的cell是第一个,则左边的应给是最后一个(为了达到无限轮播的效果)
        leftIndex = count - 1;
    }
    if (self.leftView) {
        ///移除原来的视图,并添加到重用池
        [self.leftView removeFromSuperview];
        [self.reuseViews addObject:self.leftView];
    }

    LBHorizontalLoopViewCell *leftCell = [self.dataSource cellForIndex:leftIndex inLoopView:self];
    leftCell.frame = CGRectMake(0, 0, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds));
    self.leftView = leftCell;
    [self.contentScrollView addSubview:self.leftView];
    ///将当前使用的视图移除重用池
    [self.reuseViews removeObject:self.leftView];
}


demo