iOS轮播图的实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS轮播图的实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4568字,纯文字阅读大概需要7分钟。
内容图文
//使用轮播图展示一组图片信息
//定时器 使循环
[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(runTimePage) userInfo:nil repeats:YES];
//初始化scrollview
self.scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, 320, 200)];
self.scrollview.bounces = YES;
self.scrollview.pagingEnabled = YES;
self.scrollview.delegate = self;
self.scrollview.userInteractionEnabled = YES;
self.scrollview.showsHorizontalScrollIndicator = NO;
self.scrollview.showsVerticalScrollIndicator = NO;
[self.homeView addSubview:self.scrollview];
//初始化存放循环图片的数组
self.slideImages = [NSMutableArray array];
[self.slideImages addObject:@"1.jpg"];
[self.slideImages addObject:@"2.jpg"];
[self.slideImages addObject:@"3.jpg"];
[self.slideImages addObject:@"4.jpg"];
//初始化pageControl
self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(110,240.0,100.0,18.0)]; // 初始化mypagecontrol
[self.pageControl setCurrentPageIndicatorTintColor:[UIColor redColor]];
[self.pageControl setPageIndicatorTintColor:[UIColor blackColor]];
self.pageControl.numberOfPages = [self.slideImages count];
self.pageControl.currentPage = 0;
[self.pageControl addTarget:self action:@selector(turnPage) forControlEvents:UIControlEventValueChanged]; // 触摸mypagecontrol触发change这个方法事件
[self.homeView addSubview:self.pageControl];
// 创建四个图片 imageviewm,
for (int i = 0;i<[self.slideImages count];i++)
{
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[self.slideImages objectAtIndex:i]]];
imageView.frame = CGRectMake((320 * i) + 320, 0, 320, 190.0);
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickTapGesture:)];
imageView.tag = i + 100;
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer:tapGesture];
[self.scrollview addSubview:imageView]; // 首页是第0页,默认从第1页开始的。所以+320。。。
}
// 取数组最后一张图片 放在第0页
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[self.slideImages objectAtIndex:([self.slideImages count]-1)]]];
imageView.frame = CGRectMake(0, 0, 320, 190.0); // 添加最后1页在首页 循环
[self.scrollview addSubview:imageView];
// 取数组第一张图片 放在最后1页
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[self.slideImages objectAtIndex:0]]];
imageView.frame = CGRectMake((320 * ([self.slideImages count] + 1)) , 0, 320, 190.0); // 添加第1页在最后 循环
[self.scrollview addSubview:imageView];
[self.scrollview setContentSize:CGSizeMake(320 * ([self.slideImages count] + 2), 190.0
)]; // +上第1页和第4页 原理:4-[1-2-3-4]-1
[self.scrollview setContentOffset:CGPointMake(0, 0)];
[self.scrollview scrollRectToVisible:CGRectMake(320,64,320,190.0) animated:NO]; // 默认从序号1位置放第1页 ,序号0位置位置放第4页
#pragma -------------------------------轮播图-----------------------------------------
// scrollview 委托函数
- (void)scrollViewDidScroll:(UIScrollView *)sender
{
CGFloat pagewidth = self.scrollview.frame.size.width;
int page = floor((self.scrollview.contentOffset.x - pagewidth/([self.slideImages count]+2))/pagewidth)+1;
page --; // 默认从第二页开始
self.pageControl.currentPage = page;
}
// scrollview 委托函数
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pagewidth = self.scrollview.frame.size.width;
int currentPage = floor((self.scrollview.contentOffset.x - pagewidth/ ([self.slideImages count]+2)) / pagewidth) + 1;
// int currentPage_ = (int)self.scrollView.contentOffset.x/320; // 和上面两行效果一样
// NSLog(@"currentPage_==%d",currentPage_);
if (currentPage==0)
{
[self.scrollview scrollRectToVisible:CGRectMake(320 * [self.slideImages count],64,320,190.0) animated:NO]; // 序号0 最后1页
}
else if (currentPage==([self.slideImages count]+1))
{
[self.scrollview scrollRectToVisible:CGRectMake(320,0,320,190.0) animated:NO]; // 最后+1,循环第1页
}
}
// pagecontrol 选择器的方法
- (void)turnPage
{
int page = self.pageControl.currentPage; // 获取当前的page
[self.scrollview scrollRectToVisible:CGRectMake(320*(page+1),0,320,190.0) animated:NO]; // 触摸pagecontroller那个点点 往后翻一页 +1
}
// 定时器 绑定的方法
- (void)runTimePage
{
int page = self.pageControl.currentPage; // 获取当前的page
page++;
page = page > 3 ? 0 : page ;
self.pageControl.currentPage = page;
[self turnPage];
}
//图片手势
- (void)didClickTapGesture:(UITapGestureRecognizer *)gesture
{
UIImageView * imageView = nil;
switch (gesture.view.tag) {
case 101:
imageView = (UIImageView *)[self.scrollview viewWithTag:101];
break;
case 102:
imageView = (UIImageView *)[self.scrollview viewWithTag:102];
break;
case 103:
imageView = (UIImageView *)[self.scrollview viewWithTag:103];
break;
default:
break;
}
}
原文:http://www.cnblogs.com/zhangshan/p/4202629.html
内容总结
以上是互联网集市为您收集整理的iOS轮播图的实现全部内容,希望文章能够帮你解决iOS轮播图的实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。