iOS 自动循环播放广告控件实现

iOS 自动循环播放广告控件实现,第1张

概述iOS 自动循环播放广告控件实现

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

摘要 iOS下实现的一个简单的循环播放小广告的控件,为了节约内存,使用三个imagevIEw来实现

@interface ADScrollVIEw : UIScrollVIEw {    NSTimer *_timer;}@property (nonatomic, retain) NSMutableArray *ads;          // 图集@property (nonatomic, retain) NSMutableArray *images;       // 视图集合(三个视图,左中右)@property (nonatomic, assign) NSUInteger NowImageIndex;     // 当前图片下表@property (nonatomic, assign) CGPoint         curPoint;     // 当前视图坐标- (voID)changetoImage:(NSUInteger)index;                    // 改变到某个广告,当我们点击pagecontrol的某个页时,将页号作为参数窜过来,即可实现效果// 滑动后,将最后的坐标点传过来,即可判断是左滑还是右滑,并实现滑动效果// 返回1:右滑   -1:左滑    0:未滑动- (NSInteger)scrolltopoint:(CGPoint)point;@end
@implementation ADScrollVIEw- (voID)dealloc {    // 关闭定时器并释放    [_timer invalIDate];    _timer = nil;}- (ID)init {    self = [super init];    if (self) {        self.ads = [NSMutableArray arrayWithObjects:@"ad01.png", @"ad02.png", @"ad03.jpg", nil];                // scroll的分页设置        self.pagingEnabled = YES;        self.showsHorizontalScrollindicator = NO;        self.showsverticalScrollindicator = NO;        self.contentSize = CGSizeMake(3 * 320, 100.0);                NSInteger kCount = [_ads count];        self.images = [[NSMutableArray alloc] initWithCapacity:3];        // 初始化三个切换页        for (int i = 0; i < 3; i++) {            UIImageVIEw *vIEw = [[UIImageVIEw alloc] initWithImage:[UIImage imagenamed:[_ads objectAtIndex:(i+kCount-1)%kCount]]];            vIEw.frame = CGRectMake(i*320, 0, 320, 100);            [self addSubvIEw:vIEw];            [self.images addobject:vIEw];        }        _NowImageIndex = 0;        self.bounds = CGRectMake(320, 100);        _curPoint = self.bounds.origin;   // 当前左上角坐标                // 初始化定时器        _timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(scrollTimer) userInfo:nil repeats:YES];        //self.adDelegate = nil;    }    return self;}#pragma mark - 定时器- (voID)scrollTimer {    // 自动播放    [self scrollRectToVisible:CGRectMake(640, 100) animated:YES];}#pragma mark - 设置显示第几页- (voID)changetoImage:(NSUInteger)index {    _NowImageIndex = index;         // 当前视图下标切换过去        // 设置三个vIEw的显示    self.bounds = CGRectMake(320, 100);    ((UIImageVIEw *)[self.images objectAtIndex:2]).image = [UIImage imagenamed:[self.ads objectAtIndex:[self getimageNext]]];     // 加载下一张视图    ((UIImageVIEw *)[self.images objectAtIndex:1]).image = [UIImage imagenamed:[self.ads objectAtIndex:_NowImageIndex]];     // 加载当前窗口视图    ((UIImageVIEw *)[self.images objectAtIndex:0]).image = [UIImage imagenamed:[self.ads objectAtIndex:[self getimagePre]]];     // 加载上一个窗口视图}#pragma mark - 判断左滑 右滑 实现滑动效果- (NSInteger)scrolltopoint:(CGPoint)point {    NSInteger dictionary = 0;    if (point.x-_curPoint.x == 320.0 || point.x-_curPoint.x == -640.0) {  // 右滑        _NowImageIndex = [self getimageNext];    // 获取当前图片下标        dictionary = 1;    }    else if (0 != point.x - _curPoint.x){       // 左滑        _NowImageIndex = [self getimagePre];    // 获取当前图片下标        dictionary = -1;    }        // 始终显示的是中间视图,只不过各个视图加载的图片变了    self.bounds = CGRectMake(320, 100);    ((UIImageVIEw *)[self.images objectAtIndex:2]).image = [UIImage imagenamed:[self.ads objectAtIndex:[self getimageNext]]];     // 加载下一张视图    ((UIImageVIEw *)[self.images objectAtIndex:1]).image = [UIImage imagenamed:[self.ads objectAtIndex:_NowImageIndex]];     // 加载当前窗口视图    ((UIImageVIEw *)[self.images objectAtIndex:0]).image = [UIImage imagenamed:[self.ads objectAtIndex:[self getimagePre]]];     // 加载上一个窗口视图        return dictionary;       // 如果是右滑  返回yes  左滑返回no}#pragma mark - 获取图片下标- (NSInteger)getimageNext {    if (_NowImageIndex == [_ads count] - 1) {        return 0;    }    return _NowImageIndex + 1;}- (NSInteger)getimagePre {    if (0 == _NowImageIndex) {        return [_ads count]-1;    }    return _NowImageIndex-1;}@end
// scrollvIEw 滑动结束,响应手势滑动处理- (voID)scrollVIEwDIDEndDecelerating:(UIScrollVIEw *)scrollVIEw {    NSInteger dic = [_adScroll scrolltopoint:scrollVIEw.bounds.origin];    if (1 == dic) {     // 右滑        _page.currentPage = (_page.currentPage+1)%_page.numberOfPages;    }    else if (-1 == dic){  // 左滑        _page.currentPage = (_page.currentPage+_page.numberOfPages-1)%_page.numberOfPages;    }}// scrollvIEw动作结束,响应自动轮播方式处理- (voID)scrollVIEwDIDEndScrollingAnimation:(UIScrollVIEw *)scrollVIEw {    NSInteger dic = [_adScroll scrolltopoint:scrollVIEw.bounds.origin];    if (1 == dic) {     // 右滑        _page.currentPage = (_page.currentPage+1)%_page.numberOfPages;    }    else if (-1 == dic){  // 左滑        _page.currentPage = (_page.currentPage+_page.numberOfPages-1)%_page.numberOfPages;    }}// uipageControl的响应方法- (voID)scrolTimer:(NSInteger)dictionary {    if (1 == dictionary) {        _page.currentPage = (_page.currentPage+_page.numberOfPages+1)%_page.numberOfPages;    }    else if(-1 == dictionary) {        _page.currentPage = (_page.currentPage+_page.numberOfPages-1)%_page.numberOfPages;    }    NSLog(@"%@",_adScroll);}

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的iOS 自动循环播放广告控件实现全部内容,希望文章能够帮你解决iOS 自动循环播放广告控件实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1106298.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存