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; ...
随机推荐
- Lucene学习总结之六:Lucene打分公式的数学推导 2014-06-25 14:20 384人阅读 评论(0) 收藏
在进行Lucene的搜索过程解析之前,有必要单独的一张把Lucene score公式的推导,各部分的意义阐述一下.因为Lucene的搜索过程,很重要的一个步骤就是逐步的计算各部分的分数. Lucene ...
- 设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹
原文:设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/the_victory/artic ...
- protobuf入门教程
1.简介和安装 2.消息类型 3.proto3 与 proto2 的区别 4.常用序列化/反序列化接口 5.repeated限定修饰符 6.枚举(enum).包(package) 7.导入定义(imp ...
- 【codeforces 755C】PolandBall and Forest
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- js一些编写的函数
第一:它是最常见的 function A(){ } 说明 A(); 第二: var B = function(){ } 方法 B();//这是匿名函数 第三: (function () { ...
- 小强的HTML5移动开发之路(24)—— PhoneGap Android开发环境搭建
有关JDK及Android开发环境的搭建请看我前面的博文:http://blog.csdn.net/dawanganban/article/details/9748497 一.下载PhoneGap 下 ...
- [GeekBand] STL 仿函数入门详解
本文参考文献::GeekBand课堂内容,授课老师:张文杰 :C++ Primer 11 中文版(第五版) page 37 :网络资料: 叶卡同学的部落格 http://www.leavesite. ...
- bootstrap, boosting, bagging
介绍boosting算法的资源: 视频讲义.介绍boosting算法,主要介绍AdaBoosing http://videolectures.net/mlss05us_schapire_b/ 在这个站 ...
- MapReduce 切片机制源码分析
总体来说大概有以下2个大的步骤 1.连接集群(yarnrunner或者是localjobrunner) 2.submitter.submitJobInternal()在该方法中会创建提交路径,计算切片 ...
- kindeditor 4 上传下载文件
jsp代码 1 <script type="text/javascript" src="${pageContext.request.contextPath}/kin ...