
下面是内存溢出 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 自动循环播放广告控件实现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)