自己封装的轮播工具

近期闲来无事,刚好自己封装了一个轮播的demo,能够实现设置时间间隔,是否轮播。是否显示indicator等。使用的时候直接设置參数就能够了,再也不用那么的麻烦了。

以下结合代码来阐述一下自己的思路吧。首先有两种模式,能够自己主动播放和不自己主动播放两种模式。

-(void)configureScrollPlayer{

    [self backToOriginStatus];

    if (automaticScroll) {

        [self configureWithAutomaticScroll];

    }else{

        [self configureWithNoAutomaticScroll];

    }

}

自己主动播放的时候,自己加入了一个定时器,来循环的播放,另外在自己主动播放的时候还能够滑动来实现切换页面,可是曾经做的时候这个问题是没有注意到的,后来发现两者会有冲突。总感觉用手滑动的时候效果很的堵塞。不是那么的流畅,细致分析了一下,发现时定时器出发的滚动和用手拖拽实现的滚动同一时候触发了。造成了这种现象。我在这里优先用户用手拖拽的效果。

由于用户拖拽的话。肯定是想高速的看到自己想看的东西。

在这里我在UIScrollview的代理方法里加了一个标签开关。isUserDragged =YES;

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

[timer invalidate];
    isUserDragged =YES;

}

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
    float playerWidth =mainScroll.frame.size.width;
    float lastTargetOffset =pageIndex *playerWidth;
    NSInteger page =(targetContentOffset->x - lastTargetOffset)/playerWidth;
    pageIndex+=page;

//    NSLog(@"pageIndex((((((((((((( %ld",(long)pageIndex);
//    NSLog(@"pageIndex((((((((((((( %ld",(long)pageIndex);

    UIButton *button =(UIButton *)[self viewWithTag:(101+pageIndex)];

    [self pageIndicatorClicked:button];

       timer =[NSTimer scheduledTimerWithTimeInterval:scrollTimeInterval target:self selector:@selector(run) userInfo:nil repeats:YES];

}

当run方法被触发时。默认用户没有拖拽。isUserDragged =NO;

-(void)run{

            isUserDragged =NO;

        pageIndex++;

        UIButton *button =(UIButton *)[self viewWithTag:(100+pageIndex)];
        [self pageIndicatorClicked:button];

        if (pageIndex==[dataArr count]) {
            pageIndex=0;

        }

    NSLog(@"**pageIndex******%d*********",(int)pageIndex);

}

这种话,事实上有两种模式,定时器轮播,用户手动切换页面。

以下来看看动画效果吧

demo下载地址例如以下:

demo

时间: 2024-10-08 01:09:47

自己封装的轮播工具的相关文章

用jQuery基于原生js封装的轮播

我发现轮播在很多网站里面都用到过,一个绚丽的轮播可以为网页增色不少,最近闲来无事,也用原生js封装了一个轮播,可能不像网上的插件那么炫,但是也有用心去做.主要用了闭包的思想.需要传递的参数有:图片地址的数组,图片宽度,上一页,下一页的id,图片列表即ul的id(这儿使用无序列表排列的图片),自动轮播间隔的时间.功能:实现了轮播的自动轮播,可以点击上一页,下一页进行切换. 下面是html中的代码,只需要把存放的容器写好,引入jquery即可: <!DOCTYPE html><html>

jQuery封装的轮播图组件(按需加载)

效果图 slider.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>slider</title> <link rel="stylesheet" href="../css/base.css"> <link rel="styles

scrollView封装广告轮播实例代码(Hank版)

#import <UIKit/UIKit.h> @interface PJXPageView : UIView /* 圆点颜色*/ @property(strong,nonatomic)UIColor *PJX_currentColor; /*没选中的圆点颜色*/ @property(strong,nonatomic)UIColor *PJX_otherColor; /*  图片数据*/ @property(strong,nonatomic)NSArray *PJX_imageNames; +

UISCrollView —— 图片轮播器封装实现(三)——(第三讲)

1.分析 利用xib布局,然后自定义一个UIView,解析xib,然后利用控制器传入数据,将其加载到控制器的view上展示即可 2. 程序结构 3. 代码具体实现 1>  xib文件 2>  创建类 XMGPageView,然后将其与xib文件关联,选中xib文件,然后设置下文中 " custom class " 为定义的类,让其来管理xib 1>    (如图,设置xib与类关联) 2>  XMGPageView.h 文件中,声明分页图片数组属性,及其一个快速

UISCrollView —— 图片轮播器实现(三)——(第二讲)

1. 所用知识点 1> UIScrollView的基本属性,和UIPageControl设置,还有就是要用到NSTimer来定时实现UIScrollView的图片轮播 2> NSTimer简单介绍: 2.1  NSTimer叫做“定时器”,它的作用如下 * 在指定的时间执行指定的任务 * 每隔一段时间执行指定的任务 2.2  NSTimer简单使用: 1> 调用下面的方法就会开启一个定时任务 + (NSTimer *)scheduledTimerWithTimeInterval:(NST

一步一步拆解一个简单的iOS轮播图(三图)

导言(可以不看): 不吹不黑,也许是东半球最简单的iOS轮播图拆分注释(讲解不敢当)了(tree new bee).(一句话包含两个人,你能猜到有谁吗?提示:一个在卖手机,一个最近在卖书)哈哈... 我第一次项目中需要使用轮播图的时候我是用的别人写好的一个轮子,那个轮播封装很多东西,包括比如可以设置pageControl的位置,可以传图片url或本地图片,缓存网络图片等等.但是我觉得没必要搞那么复杂,我喜欢简单并足够做事的东西.现在有时间便想自己把它拆解一下.看了一些简书上一些作者写的关于轮播图

JQ 图片轮播并封装

利用面向对象自己动手写了一个封装好的jquery轮播对象,可满足一般需求,需要使用时只需调用此对象的轮播方法即可. demo:https://github.com/zsqosos/shopweb 具体代码如下: HTML结构: 1 <div class="banner" id="J_bg_ban"> 2 <ul> 3 <li><a href="#"><img src="banner_

js-BOM之offset家族、移动函数的封装升级(轮播图)

Obj.style.width/obj.style.height与obj.offsetWidth/obj.offsetHeight的区别: <style> #div1{ height: 200px; background-color: red; } #div2{ width: 200px; height: 200px; background-color: green; } </style> </head> <body> <div style="

IOS 封装轮播图

轮播图为一种常见的方式,常用于各种网站,或者App中,当然,作为APP的启动视图也是不错的选择. 闲时封装了一个,仅供新手参考. 1.新建工程,建立轮播图类 建立一个空的工程,新建一个类,起名为Carousel,继承于UIView 2.编写Carousel类接口 1 @interface Carousel : UIView 2 typedef NS_ENUM(NSInteger,UICarouselPageType){ 3 //建立一个枚举型,来设置Carousel的样式 4 UICarouse