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.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分页相关推荐
- 手把手教你JavaEE的分页查询、分页展示,有了这个,你的项目又多了一个谈资
前言: 我们在写项目的时候,往往有一些项目的信息展示.而展示的数据量往往是很大的,这时候,加入一个分页的功能往往是最理想的选择. 先简单描述一下功能: 根据你的数据量和指定的页面展示数据条数,进行查询 ...
- django自带的分页功能
django自带的分页功能 django中自带的分页功能有缺陷,但是也是一种思路,所以在下做一个整理,方便以后使用,还有服务各位小伙伴. django视图部分的代码.(注释才是重点) from dja ...
- Mysql分页order by数据错乱重复
公司用的是Mybatis,发现分页和排序时直接传递参数占位符用的都是 ,由于,由于,由于有SQL注入风险,要改为#,但是封装page类又麻烦,所以直接使用了 pageHelper 插件了,方便快捷,但 ...
- Django 分页和使用Ajax5.3
分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...
- [JAVA EE] JPA 查询用法:自定义查询,分页查询
项目已上传:https://codechina.csdn.net/qq_36286039/javaee 自定义查询 问题:内置的crud功能不满足需求时如何添加自定义查询? 几种自定义查询方法 方法命 ...
- datatable java实现分页_jQuery Datatable - 使用Php的服务器端处理数据分页
我有jquery datatable分页的问题(服务器端处理) . 例如,我在数据库中有 24 条记录 . 计数正确显示,总分页也正确显示 . 当我点击 Next or 2nd page 时,它会根据 ...
- Oracle分页存储过程
CREATE OR REPLACE Procedure Soa_Getpager(p_Pagesize Int, --每页记录数p_Pageno Int, --当前页码,从 1 开始p_Sqlcols ...
- mybaties分页
首先引入jar包: <dependency><groupId>com.github.pagehelper</groupId><artifactId>pa ...
- Jquery前端分页插件pagination同步加载和异步加载
上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...
最新文章
- 屏幕输出语句_2.2 数据输入与输出
- Python通过一个网页地址获得网页标题Title
- 数据库密码过期 怎么修改
- 设置响应主体格式php,Laravel如何实现适合Api的异常处理响应格式
- [HTML]去除li前面的小黑点,和ul、LI部分属性
- Scrapy网络爬虫框架实际案例讲解,Python爬虫原来如此简单!
- CXF(2.7.10) - A simple JAX-WS service
- attention :为什么要用attention机制
- 这一大堆打着RAR旗号的文件都是啥
- 洛谷 P1328 生活大爆炸版石头剪刀布 模拟
- SQL Server 2008文件与文件组的关系
- miRNA数据库篇——RNAcentral
- 媒体专访 | 许彬教授:我们离元宇宙Big Bang有多近?
- 在子窗体中点击超级链接,关闭子窗体并刷新打开它的父窗体
- [深度学习]如何替换YoloV5的主干网络:Flexible-Yolov5
- 推挽 matlab仿真,推挽电路简单介绍
- 构造虚假栈帧 | 花式栈溢出
- Bootstrap框架个人总结
- python网易云_[Python] 网易云歌单/歌曲下载
- html如何上下滚动字幕,css如何做滚动字幕效果?
热门文章
- Science上发表的超赞聚类算法
- PythonGIS可视化—Matplot basemap工具箱
- 不满俄欧“北溪-2”项目 美驻德大使威胁制裁德国企业
- SpringBoot 自动开启事务原理
- highlight js 为博客增加代码着色
- JS 借助 pako.js 实现网络请求获取 gzip 数据流并解析, 解决汉字乱码
- MySQL修改版本号教程
- nagios监控单网卡双IP
- Red Hat Enterprise MRG 2.0 Installation And Configuration Guide
- 文通表格识别系统是表格数据录入的好帮手