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标签,其长 ...
随机推荐
- glusterfs 4.0.1 rpc 分析笔记2 (socket.so 模块)
socket.c在4000行位置定义了一组结构函数,我们可以从这里开始找到入口,如果是客户端则需要调用connect, 如果是服务端则需要调用listen, struct rpc_transport_ ...
- SignalR Progress
Server public class ServerHub : Hub { public async Task<string> ALongTimeTask() { var p = new ...
- C# 制作屏保(图片位置随机变化)
最近无所事事,闲着无聊,在网上翻看资料时碰巧看到了屏保制作,根据大神的思路也理解到屏保也不是很难.因此根据我自己的理解,动手谢了一个屏保. 首先,打开VS2010创建一个Windows窗体应用程序,名 ...
- 关于mysql安装到最后一步老是停留在starting server,显示无响应
从昨天晚上到今天安装MySQL花了好长的时间,一直是在后面starting server 这部就显示无响应,查资料了解到是MySQL有残留,有些注册表文件需要手动清理,下面是具体方法. 1.先用卸载软 ...
- leetcode刷题笔记231 2的幂
题目描述: 给定一个整数,写一个函数来判断它是否是2的幂. 题目分析: 判断一个整数是不是2的幂,可根据二进制来分析.2的幂如2,4,8,等有一个特点: 二进制数首位为1,其他位为0,如2为10,4为 ...
- Webpack 4 Tutorial: from 0 Conf to Production Mode
webpack 4 is out! The popular module bundler gets a massive update. webpack 4, what's new? A massive ...
- Android 学习笔记一 自定义按钮背景图
入门学到的一些组件都是比较规矩的,但在实际应用中,我们需要更多特色的组件,例如一个简单的Button,所以我们必须要自定义它的属性. 遇到的问题:用两张图片来代替按钮,分别表示点击前后 解决方法:用I ...
- POSIX 消息队列相关问题
一.查看和删除消息队列要想看到创建的posix消息队列,需要在root用户下执行以下操作:# mkdir /dev/mqueue# mount -t mqueue none /dev/mqueue删除 ...
- Android简易实战教程--第三十六话《电话录音》
今天完成一个简单的电话录音功能,即接通电话后,立即录下自己打电话的声音.实现起来比较简单:一个服务,一个TelephonyManager.一个MediaRecorder就够了. 1.布局提供一个开启录 ...
- UISearchController替换UISearchDisplayController
随着iOS 的升级,iOS 7的占有率更低了.Xcode 升级到Xcode 8之后,对iOS 应用支持的最低版本,iOS 7也被抛弃了.我在新项目中也是最低支持到iOS 8,因此工程里也是各种警告.首 ...