最后效果图:

BeyondViewController.h

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

BeyondViewController.m

//
//  BeyondViewController.m
//  8_scrollVIew分页浏览
/*下面代码存在性能问题,仅作为新特性介绍界面使用不可作为图片浏览器~1,一次性生成8个ImageView会存在性能问题,解决方法:使用3个ImageView(或2个ImageView)2,另外,循环播放还没实现*/
//  Created by beyond on 14-7-25.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//#import "BeyondViewController.h"
// 图片总张数
#define kImgCount 8
@interface BeyondViewController ()<UIScrollViewDelegate>
{// 分页条码指示控制器UIPageControl *_pageControl;
}@end@implementation BeyondViewController- (void)viewDidLoad
{[super viewDidLoad];// 调用自己定义方法[self scrollViewWithPage];
}// 带分页功能的scrollView
- (void)scrollViewWithPage
{// 1,设置scrollView的可视大小,内容大小,等属性_scrollView.frame = self.view.bounds;_scrollView.showsHorizontalScrollIndicator = NO;_scrollView.showsVerticalScrollIndicator = NO;_scrollView.bouncesZoom = NO;_scrollView.bounces = NO;// 设置代码,监听滚动完成的事件_scrollView.delegate = self;// 2,创建8个UIImageView,加入到scrollView// 每一个图片宽,高CGFloat imgW = self.view.bounds.size.width;CGFloat imgH = self.view.bounds.size.height;for (int i=0; i<kImgCount; i++) {// UIImageView// 图片名:01.jpg ~ 07.jpgNSString *imgName = [NSString stringWithFormat:@"0%d.png",i+1];UIImageView *imgView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:imgName]];// 假设保持imageView里面的image不变形//设置UIImageView的对象的下面两个属性,能够图片不变形且充满图片框为前提进行填充。imgView.clipsToBounds = YES;imgView.contentMode = UIViewContentModeScaleAspectFill;// y是0,x是一张连着一张imgView.frame = CGRectMake(i*imgW, 0, imgW, imgH);// 将全部的图片加入到scrollView[_scrollView addSubview:imgView];}// 3,这个最重要,是滚动区域// _scrollView.contentSize = CGSizeMake(kImgCount*imgW, imgH);// 0代表高度方向不滚动_scrollView.contentSize = CGSizeMake(kImgCount*imgW, 0);// 按scrollView的宽度分页_scrollView.pagingEnabled = YES;// 4,pageControl分页指示条_pageControl = [[UIPageControl alloc]init];// pageControl分页指示条的中心点在底部中间_pageControl.numberOfPages = kImgCount; //这个最重要_pageControl.center = CGPointMake(imgW*0.5, imgH-20);_pageControl.bounds = CGRectMake(0, 0, 150, 15);_pageControl.pageIndicatorTintColor = [UIColor grayColor];_pageControl.currentPageIndicatorTintColor = [UIColor redColor];_pageControl.enabled = NO; //取消其默认的点击行为[self.view addSubview:_pageControl];}
/*在这种方法里面,能够进行性能优化,由于时时在监听滚动,从而随时进行3个UIImageView的拼接,甚至可精简到仅仅有2个UIImageView进行动态拼接*/
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{// scrollView的contentOffset是最重要的属性,点,x,y记录的是滚动的距离,相对的是scrollView的可视界面的左上角的距离CGPoint offset = scrollView.contentOffset;int curPageNo = offset.x / _scrollView.bounds.size.width;_pageControl.currentPage = curPageNo ;}@end

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

iOS_9_scrollView分页相关推荐

  1. 手把手教你JavaEE的分页查询、分页展示,有了这个,你的项目又多了一个谈资

    前言: 我们在写项目的时候,往往有一些项目的信息展示.而展示的数据量往往是很大的,这时候,加入一个分页的功能往往是最理想的选择. 先简单描述一下功能: 根据你的数据量和指定的页面展示数据条数,进行查询 ...

  2. django自带的分页功能

    django自带的分页功能 django中自带的分页功能有缺陷,但是也是一种思路,所以在下做一个整理,方便以后使用,还有服务各位小伙伴. django视图部分的代码.(注释才是重点) from dja ...

  3. Mysql分页order by数据错乱重复

    公司用的是Mybatis,发现分页和排序时直接传递参数占位符用的都是 ,由于,由于,由于有SQL注入风险,要改为#,但是封装page类又麻烦,所以直接使用了 pageHelper 插件了,方便快捷,但 ...

  4. Django 分页和使用Ajax5.3

    分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...

  5. [JAVA EE] JPA 查询用法:自定义查询,分页查询

    项目已上传:https://codechina.csdn.net/qq_36286039/javaee 自定义查询 问题:内置的crud功能不满足需求时如何添加自定义查询? 几种自定义查询方法 方法命 ...

  6. datatable java实现分页_jQuery Datatable - 使用Php的服务器端处理数据分页

    我有jquery datatable分页的问题(服务器端处理) . 例如,我在数据库中有 24 条记录 . 计数正确显示,总分页也正确显示 . 当我点击 Next or 2nd page 时,它会根据 ...

  7. Oracle分页存储过程

    CREATE OR REPLACE Procedure Soa_Getpager(p_Pagesize Int, --每页记录数p_Pageno Int, --当前页码,从 1 开始p_Sqlcols ...

  8. mybaties分页

    首先引入jar包: <dependency><groupId>com.github.pagehelper</groupId><artifactId>pa ...

  9. Jquery前端分页插件pagination同步加载和异步加载

    上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...

最新文章

  1. 屏幕输出语句_2.2 数据输入与输出
  2. Python通过一个网页地址获得网页标题Title
  3. 数据库密码过期 怎么修改
  4. 设置响应主体格式php,Laravel如何实现适合Api的异常处理响应格式
  5. [HTML]去除li前面的小黑点,和ul、LI部分属性
  6. Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!
  7. CXF(2.7.10) - A simple JAX-WS service
  8. attention :为什么要用attention机制
  9. 这一大堆打着RAR旗号的文件都是啥
  10. 洛谷 P1328 生活大爆炸版石头剪刀布 模拟
  11. SQL Server 2008文件与文件组的关系
  12. miRNA数据库篇——RNAcentral
  13. 媒体专访 | 许彬教授:我们离元宇宙Big Bang有多近?
  14. 在子窗体中点击超级链接,关闭子窗体并刷新打开它的父窗体
  15. [深度学习]如何替换YoloV5的主干网络:Flexible-Yolov5
  16. 推挽 matlab仿真,推挽电路简单介绍
  17. 构造虚假栈帧 | 花式栈溢出
  18. Bootstrap框架个人总结
  19. python网易云_[Python] 网易云歌单/歌曲下载
  20. html如何上下滚动字幕,css如何做滚动字幕效果?

热门文章

  1. Science上发表的超赞聚类算法
  2. PythonGIS可视化—Matplot basemap工具箱
  3. 不满俄欧“北溪-2”项目 美驻德大使威胁制裁德国企业
  4. SpringBoot 自动开启事务原理
  5. highlight js 为博客增加代码着色
  6. JS 借助 pako.js 实现网络请求获取 gzip 数据流并解析, 解决汉字乱码
  7. MySQL修改版本号教程
  8. nagios监控单网卡双IP
  9. Red Hat Enterprise MRG 2.0 Installation And Configuration Guide
  10. 文通表格识别系统是表格数据录入的好帮手