iOS开发-图片查看(ScrollView+UIPageControl)
上周没事写了一个简单的图片查看,上次的查看只用到了一个UIImageView,不断的替换背景图片,实现图片之间的切换。通过ScrollView可以很简单的是实现图片之间的查看,设置setPagingEnabled通过坐标,宽度的设置,可以简单实现一个图片的简单分页查看显示,当然如果你有需求说需要进行所谓的无限循环,在开始和结束的时候的设置一下事件,常用的新闻客户端,图片新闻查看的时候很少有进行最后的时候跳到第一页,一般都是最后的时候都是推荐相关内容,多说了两句,开始吧:
ScrollView图片分页
控件跟上篇文章一样,就是ScrollView:
拖入三张图片到项目中,之前的文章有演示,下次写博客的考虑换图,初始化ScrollView:
1 2 3 4 5 6 7 8 9 10 | NSArray *imageArr=@[@ "girl0.jpg" ,@ "girl1.jpg" ,@ "girl2.jpg" ]; CGFloat width= self .scrollView.bounds.size.width; CGFloat height= self .scrollView.bounds.size.height; for ( NSInteger i=0; i<[imageArr count]; i++) { UIImage *image=[UIImage imageNamed:imageArr[i]]; UIImageView *imageView=[[UIImageView alloc] initWithImage:image]; [imageView setFrame:CGRectMake(i*width, 0, width, height)]; [_scrollView addSubview:imageView]; } |
这里没有写注释,稍微多说一句就是bounds是边界,可以理解为就是控件中的ScrollView的宽度和高度,也就是上一张图片展示的宽度和高度,设置周围的边界:
1 | [ self .scrollView setBounces: NO ]; |
设置水平方向的滚动条:
1 | [ self .scrollView setShowsHorizontalScrollIndicator: NO ]; |
设置ScrollView的总体的宽度(关键):
1 | [ self .scrollView setContentSize:CGSizeMake([imageArr count]*width, height)]; |
设置分页:
1 | [ self .scrollView setPagingEnabled: YES ]; |
演示效果:
UIPageControl和ScrollView图片分页
UIPageControl如果稍微弄过点前端可以理解为焦点图,大概通过指示,iOS中是小圆点,Android需要美工给自己切图或者说自力更生,iOS相对来说还是比较人性的,先定义一个UIPageControl:
1 | @property ( nonatomic ,strong) UIPageControl *pageControl; |
初始化UIPageControl设置大小和位置:
1 2 3 4 5 | self .pageControl=[[UIPageControl alloc] init]; self .pageControl.backgroundColor=[UIColor clearColor]; [ self .pageControl setBounds:CGRectMake(0, 0,200, 100)]; [ self .pageControl setCenter:CGPointMake(width/2,height/2+200.0)]; |
设置当前页和页大小:
1 2 | self .pageControl.numberOfPages=[imageArr count]; self .pageControl.currentPage=0; |
设置当前指示和其他指示:
1 2 3 | [ self .pageControl setCurrentPageIndicatorTintColor:[UIColor greenColor]]; [ self .pageControl setPageIndicatorTintColor:[UIColor yellowColor]]; |
设置滑动的时候改变UIPageControl和通过UIPageControl改变ScrollView:
1 2 3 | [_scrollView setDelegate: self ]; [ self .pageControl addTarget: self action: @selector (switchPage:) forControlEvents:UIControlEventValueChanged]; [ self .view addSubview:_pageControl]; |
滑动的时候改变UIPageControl指示通过委托设置,具体可参考上篇文章:
1 2 3 4 | -( void )scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ NSInteger currentPage=scrollView.contentOffset.x/ self .view.bounds.size.width; [ self .pageControl setCurrentPage:currentPage]; } |
UIPageControl改变ScrollView:
1 2 3 4 5 | - ( void )switchPage:( id )sender{ UIPageControl *currentControl=(UIPageControl *)sender; NSInteger currentPage=currentControl.currentPage; [_scrollView setContentOffset:CGPointMake(currentPage* self .view.bounds.size.width, 0)] ; } |
看下具体的效果:
作者:FlyElephant
出处:http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
出处:http://www.cnblogs.com/xiaofeixiang
说明:博客经个人辛苦努力所得,如有转载会特别申明,博客不求技惊四座,但求与有缘人分享个人学习知识,生活学习提高之用,博客所有权归本人和博客园所有,如有转载请在显著位置给出博文链接和作者姓名,否则本人将付诸法律。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述