最后效果图:

BeyondViewController.h

  1. //
  2. // BeyondViewController.h
  3. // 8_scrollVIew分页浏览
  4. //
  5. // Created by beyond on 14-7-25.
  6. // Copyright (c) 2014年 com.beyond. All rights reserved.
  7. //
  8.  
  9. #import <UIKit/UIKit.h>
  10.  
  11. @interface BeyondViewController : UIViewController
  12. @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
  13.  
  14. @end

BeyondViewController.m

  1. //
  2. // BeyondViewController.m
  3. // 8_scrollVIew分页浏览
  4. /*
  5. 下面代码存在性能问题,仅作为新特性介绍界面使用
  6. 不可作为图片浏览器~
  7. 1,一次性生成8个ImageView会存在性能问题,解决方法:使用3个ImageView(或2个ImageView)
  8. 2,另外,循环播放还没实现
  9. */
  10. // Created by beyond on 14-7-25.
  11. // Copyright (c) 2014年 com.beyond. All rights reserved.
  12. //
  13.  
  14. #import "BeyondViewController.h"
  15. // 图片总张数
  16. #define kImgCount 8
  17. @interface BeyondViewController ()<UIScrollViewDelegate>
  18. {
  19. // 分页条码指示控制器
  20. UIPageControl *_pageControl;
  21. }
  22.  
  23. @end
  24.  
  25. @implementation BeyondViewController
  26.  
  27. - (void)viewDidLoad
  28. {
  29. [super viewDidLoad];
  30. // 调用自己定义方法
  31. [self scrollViewWithPage];
  32. }
  33.  
  34. // 带分页功能的scrollView
  35. - (void)scrollViewWithPage
  36. {
  37.  
  38. // 1,设置scrollView的可视大小,内容大小,等属性
  39. _scrollView.frame = self.view.bounds;
  40. _scrollView.showsHorizontalScrollIndicator = NO;
  41. _scrollView.showsVerticalScrollIndicator = NO;
  42. _scrollView.bouncesZoom = NO;
  43. _scrollView.bounces = NO;
  44. // 设置代码,监听滚动完成的事件
  45. _scrollView.delegate = self;
  46.  
  47. // 2,创建8个UIImageView,加入到scrollView
  48. // 每一个图片宽,高
  49. CGFloat imgW = self.view.bounds.size.width;
  50. CGFloat imgH = self.view.bounds.size.height;
  51. for (int i=0; i<kImgCount; i++) {
  52. // UIImageView
  53. // 图片名:01.jpg ~ 07.jpg
  54. NSString *imgName = [NSString stringWithFormat:@"0%d.png",i+1];
  55. UIImageView *imgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:imgName]];
  56. // 假设保持imageView里面的image不变形
  57. //设置UIImageView的对象的下面两个属性,能够图片不变形且充满图片框为前提进行填充。
  58. imgView.clipsToBounds = YES;
  59. imgView.contentMode = UIViewContentModeScaleAspectFill;
  60. // y是0,x是一张连着一张
  61. imgView.frame = CGRectMake(i*imgW, 0, imgW, imgH);
  62. // 将全部的图片加入到scrollView
  63. [_scrollView addSubview:imgView];
  64. }
  65.  
  66. // 3,这个最重要,是滚动区域
  67. // _scrollView.contentSize = CGSizeMake(kImgCount*imgW, imgH);
  68. // 0代表高度方向不滚动
  69. _scrollView.contentSize = CGSizeMake(kImgCount*imgW, 0);
  70. // 按scrollView的宽度分页
  71. _scrollView.pagingEnabled = YES;
  72.  
  73. // 4,pageControl分页指示条
  74. _pageControl = [[UIPageControl alloc]init];
  75. // pageControl分页指示条的中心点在底部中间
  76. _pageControl.numberOfPages = kImgCount; //这个最重要
  77. _pageControl.center = CGPointMake(imgW*0.5, imgH-20);
  78. _pageControl.bounds = CGRectMake(0, 0, 150, 15);
  79. _pageControl.pageIndicatorTintColor = [UIColor grayColor];
  80. _pageControl.currentPageIndicatorTintColor = [UIColor redColor];
  81. _pageControl.enabled = NO; //取消其默认的点击行为
  82. [self.view addSubview:_pageControl];
  83.  
  84. }
  85. /*
  86. 在这种方法里面,能够进行性能优化,由于时时在监听滚动,从而随时进行3个UIImageView的拼接,甚至可精简到仅仅有2个UIImageView进行动态拼接
  87. */
  88. - (void)scrollViewDidScroll:(UIScrollView *)scrollView
  89. {
  90. // scrollView的contentOffset是最重要的属性,点,x,y记录的是滚动的距离,相对的是scrollView的可视界面的左上角的距离
  91. CGPoint offset = scrollView.contentOffset;
  92.  
  93. int curPageNo = offset.x / _scrollView.bounds.size.width;
  94. _pageControl.currentPage = curPageNo ;
  95.  
  96. }
  97.  
  98. @end

版权声明:本文博客原创文章,博客,未经同意,不得转载。

iOS_9_scrollView分页的更多相关文章

  1. 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题

    最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...

  2. js实现前端分页页码管理

    用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...

  3. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  4. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  5. NET Core-TagHelper实现分页标签

    这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...

  6. 套用JQuery EasyUI列表显示数据、分页、查询

    声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...

  7. php实现的分页类

    php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...

  8. C#关于分页显示

    ---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...

  9. JAVA 分页工具类及其使用

    Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...

随机推荐

  1. WordPress的后台功能菜单介绍与操作,WordPress后台说明

    WordPress网站的后台概况和登陆地址 网站都有个后台管理系统,通过网站后台,你可以改变你的网站外观,管理你网站的数据,给网站前台增加页面,文章,视频,图片或者其他功能. 通过WordPress建 ...

  2. [Elm] Installing and setting up Elm

    Before writing any Elm we need to first install the runtime locally. In this lesson we install the E ...

  3. solr源码导入eclipse 分类: H4_SOLR/LUCENCE 2014-07-14 14:11 550人阅读 评论(1) 收藏

    转载自:http://blog.csdn.net/vltic/article/details/19917377 (1)相应的开发环境准备          (1)jdk1.6+的安装和环境变量配置(命 ...

  4. php实现不用加减乘除号做加法(1、善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍)

    php实现不用加减乘除号做加法(1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍) 一.总结 1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍 二.ph ...

  5. php实现把二叉树打印成多行(谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误)

    php实现把二叉树打印成多行(谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误) 一.总结 要点:a.层次遍历(队列)  b.层次遍历中的层次(孩 ...

  6. event.relatedTarget、event.fromElement、event.toElement

    在标准DOM中,mouseover和mouseout所发生的元素可以通过event.target来访问,相关元素通过event.relatedTarget属性来访问.event.relatedTarg ...

  7. Spring ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别

    http://www.lai18.com/content/9755931.html Spring 容器(Spring 的上下文) https://my.oschina.net/jast90/blog/ ...

  8. html5 video标签如何禁止视频下载

    html5 video标签如何禁止视频下载 一.总结 一句话总结:bing方法给video对象绑定return false的匿名方法. 1.html5 video标签如何禁止视频下载? bing方法给 ...

  9. Net程序调试

    Net程序调试 前言 作为一个.net开发工程师,不管是在写桌面程序.服务程序或web程序,在开发阶段,我们必须非常熟悉vs的动态调试技能,当然web程序可能还需要调试前端的脚本或样式,这不在本文的讨 ...

  10. 要求两个异步任务都完成后, 才能回到主线程:dispatch_group_t

    需求:两个异步任务都完成后, 回到主线程 /** 1.下载图片1和图片2 2.将图片1和图片2合并成一张图片后显示到imageView上 思考: * 下载图片 : 子线程 * 等2张图片都下载完毕后, ...