使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果
利用UIScrollView的滚动效果来实现,先上图:
实现过程是:在viewController里先增加UIScrollView和UIPageControl:
-(void) loadView {
[super loadView];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320,480)];
UIPageControl* pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 438, 320, 42)];
self.scrollView = scrollView;
self.pageControl = pageControl;
self.pageControl.opaque = 1;
[self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:self.scrollView];
[self.view addSubview:self.pageControl]; }
然后来初始化UIScrollView:
- (void)viewDidLoad
{
[super viewDidLoad]; self.contentList = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
NSMutableArray* controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0 ; i < kNumberOfPages; i++) {
[controllers addObject:[NSNull null]];
} self.viewControllers = controllers;
self.scrollView.pagingEnabled = YES; //contentSize是内容的宽度
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width*kNumberOfPages,
self.scrollView.frame.size.height); self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.showsVerticalScrollIndicator = NO;
self.scrollView.scrollsToTop = NO;
self.scrollView.delegate = self; self.pageControl.numberOfPages = kNumberOfPages;
self.pageControl.currentPage = 0; [self loadScrollViewWithPage:0];
[self loadScrollViewWithPage:1];
// Do any additional setup after loading the view.
} //UserImageViewController里仅仅有一个UIImageView
-(void) loadScrollViewWithPage:(int)page{
if (page < 0) {
return;
}else if(page >= kNumberOfPages) {
//do some thing,like jump to other screen CalendarViewExample* calendarView = [[CalendarViewExample alloc] init];
[self presentViewController:calendarView animated:YES completion:^{}];
return;
} UserImageViewController* controller = [self.viewControllers objectAtIndex:page];
if ((NSNull*)controller == [NSNull null]) {
controller = [[UserImageViewController alloc] init];
[self.viewControllers replaceObjectAtIndex:page withObject:controller];
} if (controller.view.superview == nil) {
CGRect frame = self.scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[self.scrollView addSubview:controller.view]; NSString* name =[self.contentList objectAtIndex:page];
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"jpg"];
controller.numberImage.image = [UIImage imageWithContentsOfFile:path]; }
}
假设用手指来滚动的时候:
-(void) scrollViewDidScroll:(UIScrollView *)scrollView{
if (pageControlUsed) { return;
} CGFloat pageWidth = scrollView.frame.size.width;
//page表示当前滚动哪一页的标识
int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth)+1; self.pageControl.currentPage = page; [self loadScrollViewWithPage:page-1];
[self loadScrollViewWithPage:page];
[self loadScrollViewWithPage:page+1]; } -(void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
pageControlUsed = NO;
} -(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
pageControlUsed = NO;
}
然后假设切换到下一页:
-(void) changePage:(id)sender{
int page = self.pageControl.currentPage;
NSLog(@"chanepage page=%d",page); [self loadScrollViewWithPage:page-1];
[self loadScrollViewWithPage:page]; CGRect frame = self.scrollView.frame;
frame.origin.x = frame.size.width*page;
frame.origin.y = 0;
[self.scrollView scrollRectToVisible:frame animated:YES]; pageControlUsed = YES;
}
使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果的更多相关文章
- 使用plupload做一个类似qq邮箱附件上传的效果
公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可 ...
- 用pyqt5做一个能python程序能插入图片的ide
之前只是放到github上了,现在一想应该开源,大家想继续做好这个ide的都能从这里起步. #注意在.py文件相同目录下放一个1.png做测试图片 #本质就是用html来实现图片 #写在前面的话:这个 ...
- 微软云创益大赛获奖团队风采:做一个中国特色的.Net源代码社区
为了强化云技术,落地云应用,彰显云价值,微软(中国)携手中国计算机报举办了“微软Cloud OS第二届云创益大赛”.本届大赛历时111天,共吸引了6647位个人组选手回答了70,078道题,59支参赛 ...
- 扩展一个boot的插件—tooltip&做一个基于boot的表达验证
在线演示 本地下载 (代码太多请查看原文) 加班,加班加班,我爱加班··· 我已经疯了,哦也. 这次发一个刚接触boot的时候用boot做的表单验证,我们扩展一下tooltip的插件,让他可以换颜色. ...
- 用 JS 做一个数独游戏(二)
用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...
- 用UIScrollview做一个网易scrollviewbar
效果如上,点击出现的图片是用UIImageview添加上的,比较简陋 我用了两种方法,第一种是直接在viewcontroller里面写代码 第二种是用了一个类来封装这个scrollviewbar 对外 ...
- iOS:UI系列之UIScrollview和UIPagecontrol
转眼间,又是一天,就这样忙忙碌碌的一天一天的过着, 不过还好,不是浑浑噩噩的,也算是小有所成,劳有所获吧,嘿嘿! 好了,到了总结的时间啦, 下面就为大家简单讲解下我今天学习的内容吧,希望对各位都有所帮 ...
- UIPageControl的一个Demo
本篇文章只是记录了一个自定义UIPageControl 的制作,其实很简单的 源码在底部会奉上链接,还望多多交流,多多支持. 首先效果图如下: 首先先做一个UISCrollView // 建议这样 ...
- 【Bugly干货分享】一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎
Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言 好吧,说是“粒子引擎”还是大言不 ...
随机推荐
- BZOJ 3727 DP?推式子..
思路: 设$sum[i]表示i的子树中a[i]的和$ $b[1]=\Sigma a[i]*dis[i] = \Sigma _{i=2} ^n sum[i]$ $b[x]-b[fa[x]]=sum[1] ...
- Tomcat 程序无问题的情况下页面打开变慢的原因
看看这写日志的频率就知道我有多闲了.. 前言: 其实关于tomcat,遇到过很多关于“慢”的问题,比如启动慢,比如页面打开慢, 以前太忙也太懒,不愿意花时间分析原因,现在终于肯静下来找原因 环境是ec ...
- Windows下错误码全解析
windows系统下,调用函数出错时.可以调用GetLastError函数返回错误码.但是GetLastError函数返回值是DWORD类型,是一个整数.如果想要知道函数调用的真正错误原因,就需要对这 ...
- 安卓代码迁移:Make.exe: *** [***.o]Error 1
描述:NDK开发中显示,windows环境下NDK开发 解决办法:查找系统环境变量,找到关于Cygwin的环境变量或其他无效的环境变量删除处理.
- react常用语法
1.获取dom结构 <div className="Component_projress" ref="projressBar" js中: let proj ...
- WPF动态折线图
此项目源码下载地址:https://github.com/lizhiqiang0204/WpfDynamicChart 效果图如下: 此项目把折线图制作成了一个控件,在主界面设置好参数直接调用即可,下 ...
- PAT_A1151#LCA in a Binary Tree
Source: PAT A1151 LCA in a Binary Tree (30 分) Description: The lowest common ancestor (LCA) of two n ...
- anaconda安装的TensorFlow版本没有model这个模块
一.采用git bash来安装,确认已经安装了git 二.手动找到TensorFlow的模块文件夹地址,若不知道,输入以下两行代码: import tensorflow as tf tf.__path ...
- 常用rides命令
rides使用步骤 1.源代码构建安装 1.下载,Linux下命令wget http://redis.io/download下载redis的包 2.解归档Linux下命令tar -xvf redis- ...
- 【codeforces 483B】Friends and Presents
[链接] 我是链接,点我呀:) [题意] [题解] 我们可以二分n的值,设为mid 那么对于n=mid 我们可以算出来以下3个东西 temp1 = n/x; temp2 = n/y; temp3 = ...