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];

时间: 2024-10-10 02:20:40

scrollView封装广告轮播实例代码(Hank版)的相关文章

UIimage两种初始化的区别 广告轮播封装

UIimage两种初始化的区别 第一种初始化: UIImage *image = [UIImage imageNamed:@"xxx"];  注意(这种方法加载的图片如果后缀名是png的,可以不写后缀名,根据屏幕分辨率自己去匹配图片) 第二种初始化: NSString *path = [[NSBundle mainBundle] pathForResource:@"xxx.png" ofType:nil]; UIImage *image = [[UIImage al

Android 通过ViewFlipper实现广告轮播功能并可以通过手势滑动进行广告切换

为了实现广告轮播功能,在网上找了很多方法,有的效果很好,但是代码太麻烦,并且大多是用的viewpager,总之不是很满意. 于是看了一下sdk有个控件是ViewFlipper,使用比较方便,于是尝试了一下,最终实现了所需效果.在这里与大家分享. 首先看一下效果(主要是布局方面的效果,毕竟手势识别和滑动不太好显示,懒得弄成gif了): 1.布局文件.xml <LinearLayout android:layout_width="fill_parent" android:layout

猫猫学iOS 之广告轮播图,collectionView制作

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果图 不多说,好不好先看效果,之前做过一个scrollView的轮播图,但是很局限,很多多余代码,今天猫猫重新做了一个用collectionView的流水布局做的一个,可以拿去做广告轮播,也可以做系统新特性哦,来,看下效果吧. 源码共享:https://github.com/znycat/NYCarouselView 很久很久以前就想做了.总而言之,猫猫代码有

Android无限广告轮播 - 自定义BannerView

1.概述 这其实是我第一篇想写的博客,可能是因为我遇到了太多的坑,那个时候刚入行下了很多Demo发现怎么也改不动,可能是能力有限,这次就做一个具体的实现和彻底的封装. 上次讲了Android无限广告轮播-ViewPager源码分析,有了源码分析我们对ViewPager就有了一个大概的了解,那么再来封装成自定义View,就会简单许多,附视频讲解地址:http://pan.baidu.com/s/1bpqqkGn 2.效果封装 2.1 自定义BannerViewPager extends ViewP

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

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

广告轮播

1 package com.zxw.fragment; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.InputStreamReader; 7 import java.io.UnsupportedEncodingException; 8 import java.util.ArrayList; 9 import java.

android-自定义广告轮播Banner(无限循环实现)

关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户"友好性",下面来看几个示例图:    再来看下我仿写的效果: 关于广告轮播Banner这个东西,GitHub上面应该有现成的开源组件,不过我没去找过,觉得实现起来不会太难,就自己去仿写了,下面我说下实现的思路: 1.首先看到这个可以滑动切换图片的界面,我们很自然就会想到ViewPager控

猫猫学iOS 之广告轮播图,collectionView制作(源码)

猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 源码共享:https://github.com/znycat/NYCarouselView 效果图 源代码 NYCarouselView.h // // NYCarouselView.h // 广告轮播CollectionView // // Created by IOS on 15/12/26. // Copyright ? 2015年 com.itcat.c

安卓开发笔记——自定义广告轮播Banner(无限循环实现)

关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户"友好性",下面来看几个示例图:     再来看下我仿写的效果: 关于广告轮播Banner这个东西,GitHub上面应该有现成的开源组件,不过我没去找过,觉得实现起来不会太难,就自己去仿写了,下面我说下实现的思路: 1.首先看到这个可以滑动切换图片的界面,我们很自然就会想到ViewPager