iOS开发UI篇—无限轮播(循环展示)
iOS开发UI篇—无限轮播(循环展示)
一、简单说明
之前的程序还存在一个问题,那就是不能循环展示,因为plist文件中只有五个数组,因此第一个和最后一个之后就没有了,下面介绍处理这种循环展示问题的小技巧。
方法一:使用一个for循环,循环200次,创建200*=1000个模型,且默认程序启动后处在第100组的位置,向前有500个模型,向后也有500个模型,产生一种循环展示的假象。
代码如下:
//
//
//
//
//
//
#import "YYViewController.h"
#import "MJExtension.h"
#import "YYnews.h"
#import "YYcell.h"
#define YYIDCell @"cell"
@interface YYViewController ()
@property (weak, nonatomic) IBOutlet UICollectionView *collectinView;
@property(nonatomic,strong)NSMutableArray *news;
@end
@implementation YYViewController
#pragma mark-懒加载
//-(NSArray *)news
//{
//
//
//
//
//}
-(NSMutableArray *)news
{
}
- (void)viewDidLoad
{
//
}
#pragma mark- UICollectionViewDataSour
//一共多少组,默认为1组
-(NSInteger)numberOfSectionsInCollec
{
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
}
#pragma mark-UICollectionViewDelegate
@end
打印查看所处的索引(全程依然只创建了两个cell):
说明:
[self.collectinView scrollToItemAtIndexPath:(NSIndexPath *) atScrollPosition:(UICollectionViewScrollPo//默认处于第0组的第500个模型的左边
方法二:设置其有100组,那么一共有100*5=500个模型。且设置默认处于第50组的索引为0处。
代码如下:
//
//
//
//
//
//
//
#import "YYViewController.h"
#import "MJExtension.h"
#import "YYnews.h"
#import "YYcell.h"
#define YYIDCell @"cell"
@interface YYViewController ()
@property (weak, nonatomic) IBOutlet UICollectionView *collectinView;
@property(nonatomic,strong)NSArray *news;
@end
@implementation YYViewController
#pragma mark-懒加载
-(NSArray *)news
{
}
//-(NSMutableArray *)news
//{
//
//
//
//
//
//
//
//
//}
- (void)viewDidLoad
{
//
//
}
#pragma mark- UICollectionViewDataSour
//一共多少组,默认为1组
-(NSInteger)numberOfSectionsInCollec
{
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
}
#pragma mark-UICollectionViewDelegate
@end
注意:上面的两种方法都创建了大量的无用的模型,不太可取。且在实际开发中,建议模型的总数不要太大,因为在其内部需要遍历计算所有控件的frame。
如果模型数量太大,会占用资源。
改进建议:可以监听手指在上面的滚动,当停止滚动的时候,又重新设置初始的中间位置。