iOS开发之实现图片自动切换(类似android画廊效果)
#import ViewController.h#define ImageViewCount 5@interface ViewController ()<uiscrollviewdelegate>@property (weak, nonatomic) IBOutlet UIScrollView *imageScrollView;@property (weak, nonatomic) IBOutlet UIPageControl *imageViewPageControl;@property (strong, nonatomic) NSTimer *timer;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [self addImageView2ScrollView]; self.imageScrollView.contentSize = CGSizeMake(self.imageScrollView.frame.size.width * ImageViewCount, 0); self.imageScrollView.delegate = self; self.imageScrollView.pagingEnabled = YES;//UIScrollView支持拖动分页 self.imageViewPageControl.numberOfPages = ImageViewCount; [self addScrollTimer];}- (void)rotatePic{ int currentPageIndex = self.imageViewPageControl.currentPage; if(++currentPageIndex == 5){ currentPageIndex = 0; } CGFloat offsetX = currentPageIndex * self.imageScrollView.frame.size.width; [UIView animateWithDuration:1 animations:^{ self.imageScrollView.contentOffset = CGPointMake(offsetX, 0); }];}/**添加图片到imageScrollView*/- (void)addImageView2ScrollView{ CGFloat imageWidth = self.imageScrollView.frame.size.width; CGFloat imageHeight = self.imageScrollView.frame.size.height; for(int i = 0;i <= ImageViewCount;i++){ UIImageView *imageInScroll = [[UIImageView alloc] init]; imageInScroll.frame = CGRectMake(i * imageWidth, 0, imageWidth, imageHeight); imageInScroll.image = [UIImage imageNamed:[NSString stringWithFormat:@img_%02d,i + 1]]; [self.imageScrollView addSubview:imageInScroll]; }}// 正滚动时执行- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat offX = self.imageScrollView.contentOffset.x;//(0,0)距离content内部左上顶点的x轴长度 NSLog(@~~~~~~~%f ^^^^^^%f, offX, self.imageScrollView.frame.size.width); int currentPageIndex = (offX + .5f * self.imageScrollView.frame.size.width) / self.imageScrollView.frame.size.width; self.imageViewPageControl.currentPage = currentPageIndex;}- (void)addScrollTimer{ self.timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(rotatePic) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];}- (void)removeScrollTimer{ [self.timer invalidate];//释放定时器 self.timer = nil;}// 开始准备滚动时执行 移除定时滚动操作- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{ NSLog(@~~~scrollViewWillBeginDragging); [self removeScrollTimer];}www.2cto.com// 结束滚动后执行 添加定时滚动操作- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ NSLog(@~~~scrollViewDidEndDragging); [self addScrollTimer];}@end</uiscrollviewdelegate> |
对UIScrollView的运用,以上代码中有详细注释,需注意2点:
1.注意设置contentSize属性。其中contentSize表示scroll内容尺寸大小
2.注意设置代理UIScrollViewDelegate,才可调用其中的方法
对于定时器NSTimer的运用需注意
1.在线程的loop中添加定时器
2.注意使用完成回收NSTimer
结伴旅游,一个免费的交友网站:www.jieberu.com
推推族,免费得门票,游景区:www.tuituizu.com
iOS开发之实现图片自动切换(类似android画廊效果)的更多相关文章
- iOS开发——高级篇——图片轮播及其无限循环效果
平时APP中的广告位.或者滚动的新闻图片等用到的就是图片轮播这种效果,实现方式主要有两种,一种是ScrollView+ImageView,另一种则是通过CollectionView,今天总结的是Scr ...
- iOS开发:使用Tab Bar切换视图
iOS开发:使用Tab Bar切换视图 上一篇文章提到了多视图程序中各个视图之间的切换,用的Tool Bar,说白了还是根据触发事件使用代码改变Root View Controller中的Conten ...
- 原生js+css3实现图片自动切换,图片轮播
运用CSS3transition及opacity属性 制作图片轮播动画 自己这两天根据用js来控制触发CSS3中transition属性,从而写出来的以CSS3动画为基础,js控制过程的图片轮播 运用 ...
- js实现图片自动切换效果。
js实现图片自动切换效果,简单实用,原谅我只是一只小菜鸟还在学大神天天写博文装逼. <script language="javascript"> setInterval ...
- IOS开发中UIBarButtonItem上按钮切换或隐藏实现案例
IOS开发中UIBarButtonItem上按钮切换或隐藏案例实现案例是本文要介绍的内容,这个代码例子的背景是:导航条右侧有个 edit button,左侧是 back button 和 add bu ...
- jquery 图片自动切换
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- tab切换效果 网站中的图片自动切换
网站中的图片自动切换 今天上一套tab切换效果的代码 动图就自己实现吧! 下面贴HTML代码,大体分两部分,图片div和按钮div,代码很容易看懂~ <!DOCTYPE html> < ...
- iOS开发-iPad侧边栏Tab选项卡切换
Android中习惯了叫侧边栏,iOS中如果不习惯侧边栏称呼的话可以叫dock,侧边栏的切换,类似于Android中的底部导航栏的切换,iPad尺寸大了一些,导航的栏目放在侧边会显示的更好耐看一些.选 ...
- iOS开发之虾米音乐频道选择切换效果分析与实现
今天博客的内容比较简单,就是看一下虾米音乐首页中频道选择的一个动画效果的实现.之前用mask写过另外一种Tab切换的一种效果,网易云音乐里边的一种Tab切换效果,详情请移步于"视错觉:从一个 ...
随机推荐
- SQL With AS Expression
A. Creating a simple common table expression The following example shows the total number of sales o ...
- C#面向对象16 访问修饰符
C# 访问修饰符 public:公开的公共的 private:私有的,只能在内部类中访问 protected:受保护的,子类可以访问和类的内部 internal:只能在当前项目/程序集中访问.在同一项 ...
- JQuery 判断复选框是否选中
$("input").attr("checked") == "checked" or "undefined" $(&qu ...
- Python脚本带-的参数脚本
一.故事背景 由于先前的工作内容是做后台开发,对于脚本写的很少: 昨天参加面试遇到一道面试题,写一个python脚本: 通过脚本的后面的参数选项获取参数选项后面的字符串进行处理: 问题没记错的话大概是 ...
- 关于IDEA导入依赖问题,阿里云下载不了
关于阿里云,有部分数据是不能够下载的,就拿ojdbc8-12.2.0.1.0.jar来说 pom.xml <!--Oracle驱动 因为maven仓库下载不了,采用本地导入--> < ...
- Linux命令详解——vmstat
Vmstat命令详解 一.前言 vmstat命令: 用来获得有关进程.虚存.页面交换空间及 CPU活动的信息.这些信息反映了系统的负载情况 二.虚拟内存运行原理 在系统中运行的每个进程都需要使用到内 ...
- tftp client命令示例
tftp 192.168.1.1 -c put myfile theirfile tftp 192.168.1.1 -m binary -c put myfile theirfile The tftp ...
- Maxwell平滑升级流程
1. 同步配置文件 copy之前的配置文件 2 关掉监控程序 如果有的话 3 kill掉之前的maxwell程序 4 查询已经读取到的position位置,然后重启服务 ...
- 一篇文章让你彻底明白__getattr__、__getattribute__、__getitem__的用法与执行原理
__getattr__ 在Python中,当我们试图访问一个不存在的属性的时候,会报出一个AttributeError.但是如何才能避免这一点呢?于是__getattr__便闪亮登场了 当访问一个不存 ...
- 亲测,将自己的项目部署到Github下
转载内容,其实就是为了方便自己不用再去百度 感谢这位前辈 链接