最后效果图:

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.jpg
NSString *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. 记一次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. js进阶 11-15 jquery过滤方法有哪些

    js进阶 11-15  jquery过滤方法有哪些 一.总结 一句话总结:jquery方法中的参数一般是什么:选择器.元素或 jQuery 对象. 1.jquery方法中的参数一般是什么? 选择器.元 ...

  2. 利用函数的惰性载入提高 javascript 代码性能

    在 javascript 代码中,因为各浏览器之间的行为的差异,我们经常会在函数中包含了大量的 if 语句,以检查浏览器特性,解决不同浏览器的兼容问题.例如,我们最常见的为 dom 节点添加事件的函数 ...

  3. [转载]Ocelot简易教程(二)之快速开始2

    为什么这篇的标题叫“Ocelot简易教程(二)之快速开始2”呢,因为很多朋友跟我说上一篇“ Ocelot简易教程(二)之快速开始1”内容太少了,只是简单介绍Ocelot的一些简单配置,让Ocelot能 ...

  4. js导出报表

    原文链接:https://blog.csdn.net/qq_37936542/article/details/78376156 需求:项目中有一个学生签到模块需要导出每天的签到数据,一开始用poi在后 ...

  5. PHP的SPL标准库里面的堆(SplHeap)怎么使用

    PHP的SPL标准库里面的堆(SplHeap)怎么使用 一.总结 1.因为SplHeap是抽象类,所以要先继承,实现里面的抽象方法compare后,才能new对象使用. 二.PHP的SPL标准库里面的 ...

  6. 小强的HTML5移动开发之路(43)——JqueryMobile页眉、工具栏和标签栏导航

    一.页眉 1.添加页眉和页脚 <div data-role="header"> <h1>第 1 页</h1> </div> < ...

  7. Activity“ 阻止自动弹出软键盘”的方法 -尤其是对于Tab页下的!

    我的activity是Tab页签下的~! 所以应把代码加在继承于TabActivity的那个activity中!!而不是由点击Tab页启动的那个activity <activity androi ...

  8. 移动端UI界面设计:APP字体排版设计的七个原则

    移动端UI界面设计:APP字体排版设计的七个原则 发布于: 2015 年 2 月 9 日 by admin 再来谈移动端APP字体排版设计,也许有人会说,这个还有什么好说的呢?但是真正能够运用好APP ...

  9. 关于用WebView或手机浏览器打开连接问题

    1.通常情况下 大家可能都想使用WebView打开网页内部链接而不想再调用手机浏览器,我们可以通过以下两种方法实现: (1)为WebView设置一个WebViewClient,并重写shouldOve ...

  10. tcp注意点

    tcp注意点 tcp服务器一般情况下都需要绑定,否则客户端找不到这个服务器 tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定好服务器的ip.port等信息就好,本地客户端可以随机 tcp服务 ...