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;
+(instancetype)pageView;
@end
//
// PJXPageView.m
// AdShow_PJXWang
//
// Created by 王俏 on 16/9/26.
// Copyright © 2016年 wangqiao. All rights reserved.
//
#import "PJXPageView.h"
@interface PJXPageView()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (nonatomic,strong) NSTimer *timer;
@end
@implementation PJXPageView
-(instancetype)initWithFrame:(CGRect)frame{
if (self = [super initWithFrame:frame]) {
self = [PJXPageView pageView];
}
return self;
}
-(void)awakeFromNib{
// NSTimer *timer = [NSTimer timerWithTimeInterval:1.5 target:self selector:@selector(nextPage:) userInfo:nil repeats:YES];
// [timer fire];
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(nextPage:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];
}
-(void)nextPage:(NSTimer*)timer
{
NSInteger page = self.pageControl.currentPage +1;
if (page == self.pageControl.numberOfPages) {
page = 0;
}
CGPoint offset = self.scrollView.contentOffset;
offset.x = page *self.scrollView.frame.size.width;
[self.scrollView setContentOffset:offset animated:YES];
}
-(void)setPJX_imageNames:(NSArray *)pjx_imageNames
{
_PJX_imageNames = pjx_imageNames;
for (int i = 0 ; i < pjx_imageNames.count; i++) {
UIImageView *imageView = [[UIImageView alloc]init];
imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.clipsToBounds = YES;
imageView.image = [UIImage imageNamed:pjx_imageNames[i]];
[self.scrollView addSubview:imageView];
}
self.pageControl.numberOfPages = pjx_imageNames.count;
}
-(void)setPJX_currentColor:(UIColor *)pjx_currentColor{
_PJX_currentColor = pjx_currentColor;
self.pageControl.currentPageIndicatorTintColor = pjx_currentColor;
}
-(void)setPJX_otherColor:(UIColor *)pjx_otherColor{
_PJX_otherColor = pjx_otherColor;
self.pageControl.pageIndicatorTintColor = pjx_otherColor;
}
-(void)layoutSubviews{
[super layoutSubviews];
[self.scrollView setContentSize:CGSizeMake(self.scrollView.frame.size.width*self.PJX_imageNames.count, 0)];
for (int i = 0; i < self.scrollView.subviews.count; i++) {
UIImageView *imageView = self.scrollView.subviews[i];
[imageView setFrame:CGRectMake(i*self.scrollView.frame.size.width, 0, self.scrollView.frame.size.width, self.scrollView.frame.size.height)];
}
}
+(instancetype)pageView{
//实例化自己
PJXPageView *pageView =[[[NSBundle mainBundle]loadNibNamed:@"PJXPageView" owner:nil options:nil] firstObject];
[pageView.scrollView setDelegate:pageView];
return pageView;
}
#pragma mark -- UIScrollViewDelegate
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
NSUInteger index = (NSUInteger)(scrollView.contentOffset.x/scrollView.frame.size.width+0.5);
self.pageControl.currentPage = index;
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
[self stopTimer];
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(nextPage:) userInfo:nil repeats:YES];
}
-(void)stopTimer
{
[self.timer invalidate];
}
@end
使用:
PJXPageView *page = [[PJXPageView alloc]init];
page.PJX_imageNames = @[@"001",@"002",@"003",@"004"];
page.PJX_currentColor = [UIColor blueColor];
page.PJX_otherColor = [UIColor grayColor];
page.frame = CGRectMake(100, 100, 220, 220);
[self.view addSubview:page];
转载于:https://www.cnblogs.com/PJXWang/p/5920709.html
scrollView封装广告轮播实例代码(Hank版)相关推荐
- Android弧形广告图,简单封装弧形广告轮播图(ViewPager+贝塞尔曲线)
前言 通过ViewPager和贝塞尔曲线实现了一个弧形广告轮播图. 效果图 弧形ViewPager 实现方法 想要实现这个效果,现在几行代码就可以了: Step 1. Add it in your r ...
- 广告轮播图的前后台实现
这个广告轮播系统是老师布置的前端实训的一个结课作业. 前端: 图片在广告位进行有时间性的轮播. 在两侧有前进和后退的操作. 在下面有几张轮播图的小框框,用来显示图片的进度, 点击小框框还可以立刻跳转到 ...
- android banner 广告,Android convinientbanner顶部广告轮播控件使用详解
本文实例为大家分享了convinientbanner顶部广告轮播控件的具体代码,供大家参考,具体内容如下 gradle中添加 compile 'com.bigkoo:convenientbanner: ...
- 安卓开发笔记——自定义广告轮播Banner(实现无限循环)
关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...
- 宽屏图片轮播html,jQuery实现宽屏图片轮播实例教程
本文实例讲述了jQuery实现宽屏图片轮播实例教程.分享给大家供大家参考.具体如下: 运行效果截图如下: 引入jquery库 构建html 整个代码分为三部分: 1.加载部分loadding : 2. ...
- jquery广告轮播插件
大家平时在项目中很多时候也用到广告轮播图,我也不例外,为了避免重复工作,自己编写了一个兼容所有浏览器的广告轮播插件,调用非常简单.(ps:可以很灵活的修改,以满足不同的需求) js代码: (funct ...
- android 广告轮播图片+视频+音频
一.近期有一个需求要实现一款定制化开发的一款广告轮播视频+图片+音频的结合,来吧接下来操作起来.因为发现Viewpager 轮播的监听总会频繁调用导致体验不太好 这边是使用RecyclerView+H ...
- android Banner 广告轮播
看了几个Banner,代码量都不少,小巫这个算是比较少的了,流程也不算复杂 小巫的广告轮播思路 MainActivity里从上到下 handler // 更新视图用 onCreate() //U ...
- css3模板替换php,将ECSHOP的首页主广告轮播替换为CSS+JS,最模板方法一(2)
3.打开index.php,在大约164行找到 $smarty->display('index.dwt', $cache_id); 在此行下面插入 function get_flash_xml( ...
最新文章
- 快速通过nginx配置域名访问
- opencv处理dicom图像_图像处理|opencv| 利用opencv把照片变换成素描风格
- the cdb terminated,Qt调试器问题
- 想学python从哪里入手-想要学习python,如何入手学习?
- 华为的鸿蒙系统营销,全球第一款搭载华为鸿蒙系统的荣耀智慧屏终端在万众期待中正式上线销售...
- matlab白噪声模块,matlab白噪声实现
- 电子计算机和多媒体教材分析,人教新课标:电子计算机与多媒体教材分析
- vue v-if 和 v-show 的知识点
- Pyhon 获取文件夹的大小统计
- c语言宠物管理系统,请用C语言编出一个简单的宠物管理系统。
- 被称为“Google 最大黑科技”,开发谷歌大脑,这位 AI 掌门人到底有多牛?
- 这台计算机无法连接usb,爱思助手无法连接或者连接超时解决办法
- paypal ipn java_javashop中paypal使用指南
- 冠军团队访谈录|第三届全国人工智能大赛
- 太一星晨:负载均衡啃不动的骨头交给应用交付
- java web开发(servlet传递数据给jsp)
- 通过深度神经网络和树搜索掌握围棋游戏
- 来一次云台山,感受春天的温柔、夏日的魅力
- 使用struts2框架来实现前台与后台的交互
- Where Can Machine Learning Help Robotic State Estimation 机器学习在机器人状态估计的应用