iOS 轮播中遇到的问题(暂停、重新启动)

一、 轮播的优化或者用Collection来实现

二、Timer  问题

我们可以这样来使用一个Timer

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(function:) userInfo:nil repeats:NO];

//这是一个执行一次,不重复的Timer

不过大多数情况下,我们需要的Timer都是需要不断执行d

下面是轮播控件里面Timer的一个扩展:

@implementation NSTimer (Addition)

-(void)pauseTimer
{
    if (![self isValid]) {
        return ;
    }
    [self setFireDate:[NSDate distantFuture]];
}

-(void)resumeTimer
{
    if (![self isValid]) {
        return ;
    }
    [self setFireDate:[NSDate date]];
}

- (void)resumeTimerAfterTimeInterval:(NSTimeInterval)interval
{
    if (![self isValid]) {
        return ;
    }
    [self setFireDate:[NSDate dateWithTimeIntervalSinceNow:interval]];
}

@end

//setFireDate:[NSDate distantFuture],可以让Timer暂时的休眠,睡一下吧,年轻人.

//setFireDate:[NsDate date],这个可以让Timer重新焕发活力,重新开始运行

最后一个是在延迟多长时间后重新运行.

有时我们在界面切换到别的地方时候,我们需要在轮播图停止切换,实际就是让Timer休眠一下,我们可以这么做:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [_mBannerScrollView resumeTimer];
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [_mBannerScrollView pauseTimer];
}

在界面不可见的时候,让Timer停止,界面可见的时候,Timer恢复正常运行.

最后,是Timer的释放问题。

[timer invalidate];
timer = nil;

可以这样将一个Timer释放,防止出现我的view设置为nil后Timer还在不断的运行。

时间: 2024-10-06 01:14:49

iOS 轮播中遇到的问题(暂停、重新启动)的相关文章

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

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

bootstrap中的动态加载出来的图片轮播中的li标签中的class="active"的动态添加移除

//该方法是在slide改变时立即触发该事件, $('#myCarousel').on('slide.bs.carousel', function () { $("#myCarousel ol li").toggleClass("active");//重复切换类名“active” }); 遇到的问题:在动态加载出来的轮播中设置了加载时就开始轮播data-ride="carousel"图片可以轮播但是底下的li标签的class没有进行切换.而不加d

bootstrap 获得轮播中的索引 getActiveIndex

今天想用bootstrap做一个轮播,当轮播滚到每张图的时候,在页面下面就显示相对应的内容,那么问题来了:我肯定需要知道当前活动(显示图片)的索引号,那么bootstrap的轮播组件要怎么获得这个索引号呢~查了bootstrap文档,并没有看到,又看了b的js源码,找到个getActiveIndex()的方法,正是我需要的: ------适用于bootsrap v3.0.2其他版本不确定-------- 具体用法如下: 1.html代码:(与bootsrap文档中的一毛一样.) <div id=

setTimeout和setInterval实现滚动轮播中,清除定时器的思考

PS:希望各路大神能够指点 setTimeout(function,time):单位时间内执行一次函数function,以后不执行:对应清除定时器方法为clearTimeout; setInterval(function,time):单位时间内执行一次函数function,以后一直重复执行函数:对应清除定时器方法为clearInterval; 其中function为函数名,假设其函数名为AutoPlay,其中如果写成AutoPlay,则表示这个函数,写成AutoPlay()则表示函数执行后的结果

ios轮播图片用法

// // ZQRViewController.m // 04-图片轮播器 // // Created by apple on 17-08-24. // Copyright (c) 2017年 zzqqrr. All rights reserved. // #define ZQRImageCount 5 #import "ZQRViewController.h" @interface ZQRViewController () <UIScrollViewDelegate> @

iOS轮播图的实现

//使用轮播图展示一组图片信息 //定时器  使循环 [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(runTimePage) userInfo:nil repeats:YES]; //初始化scrollview self.scrollview = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 64, 320, 200)]; self.scrol

IOS轮播图

轮播图播放的主要技术在于: cell的封装.这里采用UICollectionViewCell实现. #import <UIKit/UIKit.h> @interface CircleViewCell : UICollectionViewCell @property (nonatomic, strong) UIImage* image; @property (nonatomic, assign) NSInteger index; @end // //  CircleViewCell.m // 

ios轮播

// // ViewController.m // Ocproject // // Created by wenzhe yi on 2018/2/28. // Copyright ? 2018年 wenzhe yi. All rights reserved. // #import "Shuanghui.h" #import "ViewController.h" #define imageCount 5 #define kscrollviewsize (_scroll

BootStrap 获得轮播中的索引和当前活动的焦点对象

$('#myCarousel').on('slide.bs.carousel', function (event) { var $hoder = $('#myCarousel').find('.item'), $items = $(event.relatedTarget); //getIndex就是轮播到当前位置的索引 var getIndex= $hoder.index($items); }) 原文地址:https://www.cnblogs.com/moguzi12345/p/9869248