關(guān)于UIScrollView廣告欄的無限循環(huán)

雖然基本還是用到第三方棒旗,但是寫一些簡單的廣告欄循環(huán)的話喘批,還是要會寫。知道基本的原理铣揉。

本文寫一個(gè)簡單的Demo

因?yàn)榧虞d的圖片基本都是數(shù)據(jù)庫的圖片饶深,所以首先要有SDWebImage,然后添加頭文件#import "UIImageView+WebCache.h"
簡單的寫兩個(gè)宏
#define UIScreen_width ([UIScreen mainScreen].bounds.size.width)
#define UIScreen_height ([UIScreen mainScreen].bounds.size.height)
添加代理<UIScrollViewDelegate>
然后定義變量

@property (strong, nonatomic) NSMutableArray *imageArray;//存放圖片的數(shù)組
@property (strong, nonatomic) UIScrollView *ADScroll;//廣告欄的底層ScrollView
@property (strong, nonatomic) NSTimer *timer;//計(jì)時(shí)器

開始在.m中完成簡單的Demo

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _imageArray = [NSMutableArray array];
    [self createAD];
}

-(void)createAD{
    _ADScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 50, UIScreen_width, UIScreen_height/3)];
    _ADScroll.delegate = self;
    [self.view addSubview:_ADScroll];
    [self addImagesToScrollView];//添加圖片
    [self createTimer];//創(chuàng)建計(jì)時(shí)器
}

-(void)addImagesToScrollView{
    //這里隨便在網(wǎng)上搜了四張圖片存放在圖片數(shù)組中
    NSArray *arr = @[@"http://www.pptbz.com/pptpic/UploadFiles_6909/201204/2012041411433867.jpg",@"http://pic25.nipic.com/20121112/5955207_224247025000_2.jpg",@"http://img10.3lian.com/c1/newpic/10/08/04.jpg",@"http://img3.imgtn.bdimg.com/it/u=2699593702,2049257415&fm=206&gp=0.jpg"];
    [_imageArray addObjectsFromArray:arr];
    int i = 0;
    for (; i < _imageArray.count; i++) {
        UIImageView *img = [[UIImageView alloc] init];
        img.frame = CGRectMake(UIScreen_width * (i + 1), 50, UIScreen_width, UIScreen_height/3);
        [img sd_setImageWithURL:[NSURL URLWithString:arr[i]]];
        img.tag = i;
        [_ADScroll addSubview:img];
        
        img.userInteractionEnabled = YES;
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapClick:)];
        [img addGestureRecognizer:tap];
    }
    // 將最后一張圖片弄到第一張的位置
    UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(0, 50, UIScreen_width, UIScreen_height/3)];
    [img sd_setImageWithURL:[NSURL URLWithString:_imageArray[i-1]]];
    [_ADScroll addSubview:img];
    // 將第一張圖片放到最后位置逛拱,造成視覺上的循環(huán)
    UIImageView *img0 = [[UIImageView alloc] initWithFrame:CGRectMake(UIScreen_width * (i + 1), 50, UIScreen_width, UIScreen_height/3)];
    [img0 sd_setImageWithURL:[NSURL URLWithString:_imageArray[0]]];
    [_ADScroll addSubview:img0];
    [_ADScroll setContentOffset:CGPointMake(UIScreen_width, 0)];//將起始位置設(shè)置在這里
    
    _ADScroll.pagingEnabled = YES;
    _ADScroll.scrollEnabled = YES;
    
    _ADScroll.showsHorizontalScrollIndicator = NO;
    _ADScroll.showsVerticalScrollIndicator = NO;
    _ADScroll.contentSize = CGSizeMake((i+2)*UIScreen_width, UIScreen_height/3);
}

#pragma mark - 給每一張imageView添加點(diǎn)擊事件
-(void)tapClick:(UITapGestureRecognizer *)tap{
    UIImageView *image = (UIImageView *)tap.view;
    int a = (int)image.tag;
    NSLog(@"a = %i ",a);
//    NSLog(@"111111");
    
}

#pragma mark - NSTimer
-(void)createTimer{
    if (!_timer) {
        _timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(timerRunning) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
    }
}

-(void)timerRunning{
    
    float Offx = _ADScroll.contentOffset.x;
    Offx += UIScreen_width;
    [_ADScroll setContentOffset:CGPointMake(Offx, 0) animated:YES];
}

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    if (_ADScroll == scrollView) {
        //往左滑
        if (scrollView.contentOffset.x >= scrollView.contentSize.width - UIScreen_width ) {
            scrollView.contentOffset = CGPointMake(UIScreen_width, 0);
        }
        //往右滑
        if (scrollView.contentOffset.x <= 0) {
            scrollView.contentOffset = CGPointMake(UIScreen_width * _imageArray.count, 0); // 這里的4敌厘,是整個(gè)Image數(shù)組的個(gè)數(shù)。
        }
//        if (page == 0) {
//            [scrollView setContentOffset:CGPointMake(UIScreen_width * _imageArray.count, 0)];
//
//        }else if (page == _imageArray.count + 1){
//            // 如果是第最后一頁就跳轉(zhuǎn)到數(shù)組第一個(gè)元素的地點(diǎn)
//            [scrollView setContentOffset:CGPointMake(UIScreen_width, 0)];
//        }
    }
}

-(void)dealloc{
    [_imageArray removeAllObjects];
    [_ADScroll removeFromSuperview];
    [_timer invalidate];
    _timer = nil;
}

上邊就是一整個(gè)完整的Demo朽合,不過是最簡單的循環(huán)俱两。
如果想要看一些其他的可以看這里——UIScrollView(循環(huán)滾動(dòng)圖片)
以及——iOS_UIScrollView實(shí)現(xiàn)無限滾動(dòng),思路與代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市曹步,隨后出現(xiàn)的幾起案子宪彩,更是在濱河造成了極大的恐慌,老刑警劉巖讲婚,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尿孔,死亡現(xiàn)場離奇詭異,居然都是意外死亡筹麸,警方通過查閱死者的電腦和手機(jī)活合,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來物赶,“玉大人白指,你說我怎么就攤上這事〗妥希” “怎么了侵续?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵倔丈,是天一觀的道長。 經(jīng)常有香客問我状蜗,道長需五,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任轧坎,我火速辦了婚禮宏邮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缸血。我一直安慰自己蜜氨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布捎泻。 她就那樣靜靜地躺著飒炎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪笆豁。 梳的紋絲不亂的頭發(fā)上郎汪,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機(jī)與錄音闯狱,去河邊找鬼煞赢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哄孤,可吹牛的內(nèi)容都是我干的照筑。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼瘦陈,長吁一口氣:“原來是場噩夢啊……” “哼凝危!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晨逝,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤媒抠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咏花,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阀趴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年昏翰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刘急。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棚菊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叔汁,到底是詐尸還是另有隱情统求,我是刑警寧澤检碗,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站码邻,受9級特大地震影響折剃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜像屋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一怕犁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧己莺,春花似錦奏甫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胜蛉,卻和暖如春挠进,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腾么。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工奈梳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人解虱。 一個(gè)月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓攘须,卻偏偏與公主長得像,于是被迫代替她去往敵國和親殴泰。 傳聞我的和親對象是個(gè)殘疾皇子于宙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容