OC可点击的两种轮播图效果
基本上,每一个APP都有一个轮播图的效果展示,一般都是用来展示图片的一些信息,然后可以点击查看或购买,所以在此我将这种轮播图进行了一个类的封装,效果包含两种形式:第一种,来回轮转样式,第二种,一个方向的轮转。
首先,是对效果的设计,初始化一个View图,添加相关控件
然后是对UIScrollView代理方法的使用和定时器方法的实现,同时需要添加一个通知,来记录当前显示图片的索引值
#pragma mark ------- UIScrollViewDelegate方法
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
_imgPageC.currentPage = _imgScrollV.contentOffset.x/_rectFrame.size.width;
//发射一个通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"imgClickImg" object:self userInfo:@{@"imgIndex":[NSString stringWithFormat:@"%d",_imgPageC.currentPage]}];
}
#pragma mark ------- 定时器方法
-(void)imgMove
{
if ([_styleStr isEqualToString:@"1"])
{
//来回轮转
if (_imgScrollV.contentOffset.x>=_rectFrame.size.width*(_imgArray.count-1))
{
_speedI = -_rectFrame.size.width;
}
else if (_imgScrollV.contentOffset.x<=0)
{
_speedI = _rectFrame.size.width;
}
_imgScrollV.contentOffset = CGPointMake(_imgScrollV.contentOffset.x+_speedI, 0);
_imgPageC.currentPage = _imgScrollV.contentOffset.x/(_rectFrame.size.width);
}
else
{
//一个方向轮转
if (_imgScrollV.contentOffset.x>=_rectFrame.size.width*(_imgArray.count-1))
{
_imgScrollV.contentOffset = CGPointMake(0, 0);
_imgPageC.currentPage = _imgScrollV.contentOffset.x/(_rectFrame.size.width);
}
else
{
_imgScrollV.contentOffset = CGPointMake(_imgScrollV.contentOffset.x+_speedI, 0);
_imgPageC.currentPage = _imgScrollV.contentOffset.x/(_rectFrame.size.width);
}
}
//发射一个通知
[[NSNotificationCenter defaultCenter] postNotificationName:@"imgClickImg" object:self userInfo:@{@"imgIndex":[NSString stringWithFormat:@"%d",_imgPageC.currentPage]}];
}
这样一个封装好的轮播效果类,就完成了
如何进行调用?
首先导入头文件,然后创建一个数组,用来收集相关数据,同时添加一个通知
_imgArray1 = @[@"11.jpg",@"22.jpg",@"33.jpg",@"44.jpg",@"55.jpg",@"66.jpg",@"77.jpg"];
//添加一个通知,为了获取pageControl的索引值,从而获取到是哪张图
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(updateImgIndex:) name:@"imgClickImg" object:nil];
//创建初始化,参数传:1,来回轮转
HBChangeImg *hbCImg1 = [[HBChangeImg alloc] initWithFrame:CGRectMake(0, 20, f_Device_w, 200) imgArray:_imgArray1 styleStr:@"1"];
//添加手势,可以实现点击图片进入详情界面
UITapGestureRecognizer *tapGestureR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickImg:)];
[hbCImg1 setUserInteractionEnabled:YES];
[hbCImg1 addGestureRecognizer:tapGestureR];
[self.view addSubview:hbCImg1];
UILabel *titleLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 220, f_Device_w, 30)];
titleLabel1.text = @"styleStr:1..表示来回轮转";
titleLabel1.font = [UIFont systemFontOfSize:14];
titleLabel1.textColor = [UIColor redColor];
titleLabel1.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:titleLabel1];
_clickImgV = [[UIImageView alloc] initWithFrame:CGRectMake(0, 250, f_Device_w, 200)];
_clickImgV.backgroundColor = [UIColor lightGrayColor];
[self.view addSubview:_clickImgV];
然后实现相关方法:通知方法,和点击方法
这样就可以使用轮播效果的封装类
效果图:
源码下载Demo:http://download.csdn.net/detail/hbblzjy/9613022或者https://github.com/hbblzjy/ScrollViewPageDemo
OC可点击的两种轮播图效果的更多相关文章
- jQuey实现轮播图效果
再平常的浏览器页面,轮播图都是必不可缺少的一个板块,在这总结了一下轮播图基本的一些样式 首先介绍一下,本文实现的轮播图的基本效果: 1. 3s自动切换图片,图片切换时提示点跟随切换 2. 鼠标划到图片 ...
- 高仿阴阳师官网轮播图效果的jQuery插件
代码地址如下:http://www.demodashi.com/demo/12302.html 插件介绍 这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公开 ...
- js 实现淘宝无缝轮播图效果,可更改配置参数 带完整版解析代码[slider.js]
前言: 本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽. 本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 需求分析: ...
- js实现轮播图效果(附源码)--原生js的应用
1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...
- 用html +js+css 实现页面轮播图效果
html 页面 <html lang="en"> <head> <meta charset="UTF-8"> <met ...
- JavaScript实现轮播图效果
我又来了,同志们.老想你们了 捕获小可爱一枚. 下面进入正题:用JavaScript原生代码写轮播图效果. 具体效果就不多说了,网站上面的轮播效果我们都知晓.下面是展示代码 html代码: <d ...
- 小程序实践(二):swiper组件实现轮播图效果
swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷. 效果图: 首先看下swiper支持的属 ...
- 纯CSS实现轮播图效果,你不知道的CSS3黑科技
前言 轮播图已经是一个很常见的东西,尤其是在各大App的首页顶部栏,经常会轮番显示不同的图片. 一提到轮播图如何实现时,很多人的第一反应就是使用Javascript的定时器,当然这种方法是可以实现的. ...
- js原生实现轮播图效果(面向对象编程)
面向对象编程js原生实现轮播图效果 1.先看效果图 2.需要实现的功能: 自动轮播 点击左右箭头按钮无缝轮播 点击数字按钮切换图片 分析:如何实现无缝轮播? 在一个固定大小的相框里有一个ul标签,其长 ...
随机推荐
- 关于ajax的content-download时间过慢问题的解决方案与思考
前言: 做前端架构很久很久了,经常到我这里都是些棘手的问题,之前没有养成很好的记录问题的习惯,以后会努力成文,积累. 于是今天就有个这篇文章.关于ajax的content-download时间过慢 ...
- JS的事件模型
之前对事件模型还是比较清楚的,许多概念都清晰映射在脑海中.工作之后,一方面使用的局限性,二是习惯于用框架中的各种事件监听方式,简单即方便,久而久之,事件的一些概念开始淡出记忆中,就像我现在已经开始淡忘 ...
- Linux下常用设置文件和文件夹读写权限操作
1.查看权限 ls -l xxx.xxx (xxx.xxx是文件名) 2.常见权限 -rw------- (600) 只有所有者才有读和写的权限 -rw-r--r-- (644) 只有所有者才有读 ...
- git reset揭秘
一.命令 首先,让我们来解释几个定义. HEAD(头) 指向当前branch最顶端的一个commit,该分支上一次commit后的节点 Index(索引) The index, ...
- jmeter分布式测试远程连接失败
jmeter分布式部署其实很简单.但今天测试的时候发现了一个坑,远程连接一直失败. 原因:服务器上部署了slave,而这台服务器上有多个网卡.举个例子:ip分别为:192.168.100.6,10.1 ...
- 关于spring定时任务被多次调用的问题
在项目开发中,难免会用到定时任务,如果你的项目中用了spring这个框架,那么恭喜你,你的定时任务的创建将变得无比简单. 代码中只需要一个 @Scheduled标签,然后配置对应的执行频率即可 pas ...
- [ Java学习基础 ] Java异常处理
一.异常概述 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的.比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用Sys ...
- ACM 饭卡
Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负) ...
- Docker多台物理主机之间的容器互联
Docker 默认的桥接网卡是 docker0.它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 veth* 而 Docker 只是把所有这些网卡桥接在一起,如下: [root ...
- MySQL系列教程(五)
MyCAT MyCat是基于阿里开源的Cobar产品而研发,Cobar的稳定性.可靠性.优秀的架构和性能以及众多成熟的使用案例使得MYCAT一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远 ...