基本上,每一个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可点击的两种轮播图效果的更多相关文章

  1. jQuey实现轮播图效果

    再平常的浏览器页面,轮播图都是必不可缺少的一个板块,在这总结了一下轮播图基本的一些样式 首先介绍一下,本文实现的轮播图的基本效果: 1. 3s自动切换图片,图片切换时提示点跟随切换 2. 鼠标划到图片 ...

  2. 高仿阴阳师官网轮播图效果的jQuery插件

    代码地址如下:http://www.demodashi.com/demo/12302.html 插件介绍 这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公开 ...

  3. js 实现淘宝无缝轮播图效果,可更改配置参数 带完整版解析代码[slider.js]

    前言:         本人纯小白一个,有很多地方理解的没有各位大牛那么透彻,如有错误,请各位大牛指出斧正!小弟感激不尽.         本篇文章为您分析一下原生JS写淘宝无缝轮播图效果 需求分析: ...

  4. js实现轮播图效果(附源码)--原生js的应用

    1.js实现轮播图效果 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  5. 用html +js+css 实现页面轮播图效果

    html 页面 <html lang="en"> <head> <meta charset="UTF-8"> <met ...

  6. JavaScript实现轮播图效果

    我又来了,同志们.老想你们了 捕获小可爱一枚. 下面进入正题:用JavaScript原生代码写轮播图效果. 具体效果就不多说了,网站上面的轮播效果我们都知晓.下面是展示代码 html代码: <d ...

  7. 小程序实践(二):swiper组件实现轮播图效果

    swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷. 效果图: 首先看下swiper支持的属 ...

  8. 纯CSS实现轮播图效果,你不知道的CSS3黑科技

    前言 轮播图已经是一个很常见的东西,尤其是在各大App的首页顶部栏,经常会轮番显示不同的图片. 一提到轮播图如何实现时,很多人的第一反应就是使用Javascript的定时器,当然这种方法是可以实现的. ...

  9. js原生实现轮播图效果(面向对象编程)

    面向对象编程js原生实现轮播图效果 1.先看效果图 2.需要实现的功能: 自动轮播 点击左右箭头按钮无缝轮播 点击数字按钮切换图片 分析:如何实现无缝轮播? 在一个固定大小的相框里有一个ul标签,其长 ...

随机推荐

  1. Jenkins简明入门(一) -- 安装

    如今Jenkins官网的Guide里使用了Docker,网上很多Jenkins入门教程都已过时了,所以写这一篇入门教程. 官网的Guide Link是:https://jenkins.io/doc/p ...

  2. Android开发Java基础之Java语言基础(1)

    Java中的基本数据类型 整数类型 整数类型用来存储整数数值,既没有小数部分的数值.可以是正数,也可以是负数.整数类型在Java程序中有三种表现形式,分别是十进制,八进制,十六进制. 整型数据根据它所 ...

  3. SQL Server 2008 维护计划实现数据库备份(最佳实践)

    一.背景 之前写过一篇关于备份的文章:SQL Server 维护计划实现数据库备份,上面文章使用完整备份和差异备份基本上能解决数据库备份的问题,但是为了保障数据更加安全,我们需要再次完善我们的备份计划 ...

  4. 锐捷Linux版的下载和使用(福大客户端)

    下载锐捷程序包 点此下载 没有连接到锐捷里就进不了这个安装包的官方下载界面(好矛盾啊这个),所以我把它上传到博客园了. 解压文件 schaepher:~$ cd Downloads/ schaephe ...

  5. java.lang.NumberFormatException: For input string: " "

    原因:这个异常是说,在将字符串""转换为number的时候格式化错误.额,很简单的异常,以前我是写个方法,然后遍历对比不正确的数字或者用正则表达式之类的.现在发现一个很漂亮的方法, ...

  6. redux 最简例子

    方便初学redux的同学学习,这里是最简单的redux例子 1 import React, {Component, PropTypes} from 'react' 2 import ReactDOM ...

  7. 位运算n & (n-1)的妙用

    本文转自:http://blog.csdn.net/zheng0518/article/details/8882394 按位与的知识 n&(n-1)作用:将n的二进制表示中的最低位为1的改为0 ...

  8. PWA初体验

    一.前言 现在市面上的Native  APP成千上万个,各种应用商店里面的APP琳琅满目.原生的APP下载到手机上之后,用户就可以获取一个方便的入口,体验上也十分顺畅.但是再好的事物难免有点缺点: 1 ...

  9. 反射获取 Class

    原文链接:https://www.codemore.top/cates/Backend/post/2018-04-26/reflect-class 类 Java中每个类型要么是引用类型,要么是原生类型 ...

  10. 讨论过后而引发对EF 6.x和EF Core查询缓存的思考

    前言 最近将RabbitMQ正式封装引入到.NET Core 2.0项目当中,之前从未接触过是个高大上的东东跟着老大学习中,其中收获不少,本打算再看看RabbitMQ有时间写写,回来后和何镇汐大哥探讨 ...