UIScrollView 实现的支持循环滚动的 bannerView
pod 'SAInfiniteScrollView', '~> 1.0.7'
CGRect screenBounds = [UIScreen mainScreen].bounds;
self.bannerView = [[PowerfulBannerView alloc] initWithFrame:CGRectMake(0, 200.f, CGRectGetWidth(screenBounds), 200.f)];
[self.view addSubview:self.bannerView];
cellForRowAtIndexPath:
这里以展示 UIImageView 为例:
// 内容配置block
self.bannerView.bannerItemConfigurationBlock = ^UIView *(PowerfulBannerView *banner, id item, UIView *reusableView) {
// 这里可以尽可能重用视图
UIImageView *view = (UIImageView *)reusableView;
if (!view) {
// 没有重用的,在这里创建一个
view = [[UIImageView alloc] initWithFrame:CGRectZero];
view.contentMode = UIViewContentModeScaleAspectFill;
view.clipsToBounds = YES;
}
// 视图配置
view.image = [UIImage imageNamed:(NSString *)item];
return view;
};
// 设置内容的数据
self.bannerView.items = @[ @"1.jpg", @"2.jpg", @"ss-detail1.jpg", @"4.png", @"5.jpg", @"6.jpg" ];
配置 block 回调以处理点击事件
self.bannerView.bannerDidSelectBlock = ^(PowerfulBannerView *banner, NSInteger index) {
printf("banner did select index at: %zd \n", index);
};
配置 block 回调以处理长按事件
self.bannerView.longTapGestureHandler = ^(PowerfulBannerView *banner, NSInteger index, id item, UIView *view) {
printf("banner long gesture recognized on index: %zd !\n", index);
};
对于 PageControl 的支持,可以是 UIPageControl 或其他自定义的。但是需要包含如下两个属性:
@property (nonatomic) NSInteger numberOfPages;
@property (nonatomic) NSInteger currentPage;
设置 PageControl
self.bannerView.pageControl = pageControlInstance;
// 配置循环滚动的时间间隔
self.bannerView.loopingInterval = 2.f;
// 开启自动循环滚动
self.bannerView.autoLooping = YES;
// 配置循环滚动的时间间隔
self.bannerView.loopingInterval = 2.f;
// 关闭自动循环滚动
self.bannerView.autoLooping = NO;
// 关闭循环滚动
self.bannerView.infiniteLooping = NO;
MIT