iOS_9_scrollView分页
最后效果图:
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分页的更多相关文章
- 记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
最近有项目反应,在服务器CPU使用较高的时候,我们的事件查询页面非常的慢,查询几条记录竟然要4分钟甚至更长,而且在翻第二页的时候也是要这么多的时间,这肯定是不能接受的,也是让现场用SQLServerP ...
- js实现前端分页页码管理
用JS实现前端分页页码管理,可以很美观的区分页码显示(这也是参考大多数网站的分页页码展示),能够有很好的用户体验,这也是有业务需要就写了一下,还是新手,经验不足,欢迎指出批评! 首先先看效果图: 这是 ...
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- NET Core-TagHelper实现分页标签
这里将要和大家分享的是学习总结使用TagHelper实现分页标签,之前分享过一篇使用HtmlHelper扩展了一个分页写法地址可以点击这里http://www.cnblogs.com/wangrudo ...
- 套用JQuery EasyUI列表显示数据、分页、查询
声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...
- php实现的分页类
php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...
- C#关于分页显示
---<PS:本人菜鸟,大手子还请高台贵手> 以下是我今天在做分页时所遇到的一个分页显示问题,使用拼写SQL的方式写的,同类型可参考哦~ ------------------------- ...
- JAVA 分页工具类及其使用
Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...
随机推荐
- WordPress的后台功能菜单介绍与操作,WordPress后台说明
WordPress网站的后台概况和登陆地址 网站都有个后台管理系统,通过网站后台,你可以改变你的网站外观,管理你网站的数据,给网站前台增加页面,文章,视频,图片或者其他功能. 通过WordPress建 ...
- [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 ...
- solr源码导入eclipse 分类: H4_SOLR/LUCENCE 2014-07-14 14:11 550人阅读 评论(1) 收藏
转载自:http://blog.csdn.net/vltic/article/details/19917377 (1)相应的开发环境准备 (1)jdk1.6+的安装和环境变量配置(命 ...
- php实现不用加减乘除号做加法(1、善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍)
php实现不用加减乘除号做加法(1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍) 一.总结 1.善于寻找资源:去搜为什么位运算可以实现加法,里面讲的肯定要详细一万倍 二.ph ...
- php实现把二叉树打印成多行(谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误)
php实现把二叉树打印成多行(谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误) 一.总结 要点:a.层次遍历(队列) b.层次遍历中的层次(孩 ...
- event.relatedTarget、event.fromElement、event.toElement
在标准DOM中,mouseover和mouseout所发生的元素可以通过event.target来访问,相关元素通过event.relatedTarget属性来访问.event.relatedTarg ...
- Spring ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别
http://www.lai18.com/content/9755931.html Spring 容器(Spring 的上下文) https://my.oschina.net/jast90/blog/ ...
- html5 video标签如何禁止视频下载
html5 video标签如何禁止视频下载 一.总结 一句话总结:bing方法给video对象绑定return false的匿名方法. 1.html5 video标签如何禁止视频下载? bing方法给 ...
- Net程序调试
Net程序调试 前言 作为一个.net开发工程师,不管是在写桌面程序.服务程序或web程序,在开发阶段,我们必须非常熟悉vs的动态调试技能,当然web程序可能还需要调试前端的脚本或样式,这不在本文的讨 ...
- 要求两个异步任务都完成后, 才能回到主线程:dispatch_group_t
需求:两个异步任务都完成后, 回到主线程 /** 1.下载图片1和图片2 2.将图片1和图片2合并成一张图片后显示到imageView上 思考: * 下载图片 : 子线程 * 等2张图片都下载完毕后, ...