iosbanner_IOS 实现banner循环轮播

该博客介绍了如何在iOS应用中实现一个无限循环的轮播图效果。通过创建UIImageView并设置滚动视图的内容大小和页码控制,利用scrollView的代理方法实现页面滑动时的切换效果,确保轮播图在滑动到首尾时能够平滑过渡。
摘要由CSDN通过智能技术生成

#import "ViewController.h"

@interface ViewController (){

CGFloat w;

NSMutableArray*imgArr;

NSMutableArray*pageArr;

}@end

@implementationViewController- (void)viewDidLoad {

[super viewDidLoad];

w=self.view.frame.size.width;//page的个数

pageArr =[NSMutableArray array];for (int i = 1; i <= 3; i++) {

[pageArr addObject:[NSString stringWithFormat:@"%d.jpg",i]];

}//重新获取imgView的个数,将显示的第最后一张图片放在第一张,而在最后一张放置显示的第一张图片

imgArr =[NSMutableArray array];

[imgArr addObject:pageArr[pageArr.count- 1]];for (NSString *imgSrc inpageArr) {

[imgArr addObject:imgSrc];

}

[imgArr addObject:pageArr[0]];

self.mainScroll.contentSize= CGSizeMake(w*imgArr.count, 0);//开始塞入图片

for (int i = 0; i < imgArr.count; i++) {

NSString*imgSrc =imgArr[i];

UIImageView*imgView = [[UIImageView alloc] initWithFrame:CGRectMake(i*w, 0, w, self.mainScroll.frame.size.height)];

[imgView setImage:[UIImage imageNamed:imgSrc]];

[self.mainScroll addSubview:imgView];

}

self.pageControl.numberOfPages=pageArr.count;

self.mainScroll.bounces=NO;

self.mainScroll.pagingEnabled=YES;

self.mainScroll.showsHorizontalScrollIndicator=NO;

self.mainScroll.showsVerticalScrollIndicator=NO;

self.mainScroll.delegate =self;//自动将scrollView移动显示的第一张图片处

[self.mainScroll setContentOffset:CGPointMake(w, 0) animated:NO];

}- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

CGFloat offsetX=scrollView.contentOffset.x;int index = offsetX/w;if (index == 0) {

[self.mainScroll setContentOffset:CGPointMake(w*(imgArr.count-2), 0) animated:NO];

self.pageControl.currentPage= pageArr.count - 1;

}else if (index == imgArr.count -1){

[self.mainScroll setContentOffset:CGPointMake(w,0) animated:NO];

self.pageControl.currentPage= 0;

}else{

self.pageControl.currentPage= index - 1;

}

}@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值