ScrollView循環(huán)利用

//
//  ViewController.m
//  ScrollView循環(huán)利用
//
//  Created by 高新強 on 15/11/19.
//  Copyright ? 2015年 Gavin. All rights reserved.
//

#import "ViewController.h"

#define kCount 8
@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

@property (weak, nonatomic) UIImageView *centerImageV;
@property (weak, nonatomic) UIImageView *reuseImageV;



@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor redColor];
    
    //圖片的寬度
    CGFloat w = self.view.frame.size.width;
    //圖片的高度
    CGFloat h = self.view.frame.size.height;
    
    //設置ScrollView初始化屬性
    //設置分頁效果
    self.scrollView.pagingEnabled = YES;
    //初始化ScollView的內容大小
    self.scrollView.contentSize = CGSizeMake(3 * w, h);
    //隱藏垂直滾動條
    self.scrollView.showsVerticalScrollIndicator = NO;
    //設置ScrollView代理
    self.scrollView.delegate = self;
    
    //創(chuàng)建一個可見的UIImageView(也就是中間的UIImageView)
    UIImageView *centerImageV = [[UIImageView alloc] init];
    //記錄住中間的centerImageV.
    self.centerImageV = centerImageV;
    //設置一張默認圖片
    self.centerImageV.image = [UIImage imageNamed:@"00"];
    //設置中間圖片的x值為一個屏幕的寬度
    self.centerImageV.frame = CGRectMake(w, 0, w, h);
    //給圖片綁定一個標識.
    self.centerImageV.tag = 0;
    //把圖片添加到ScrollView上.
    [self.scrollView addSubview:self.centerImageV];
    
    
    
    //創(chuàng)建一個可重復利用的UIImageView,也就是一下滾動出來的圖片.
    UIImageView *reuseImageV = [[UIImageView alloc] init];
    //記錄住reuseImageV
    self.reuseImageV = reuseImageV;
    //把它的位置設置到最左側.也就是0,0的位置,讓它的大小和當前ScrollView的大小一樣.
//    self.reuseImageV.image = [UIImage imageNamed:@"01"];
    self.reuseImageV.frame = self.view.bounds;
    
    //把圖片添加到ScrollView上.
    [self.scrollView addSubview:self.reuseImageV];
    
    
    //初始化scrollView的偏移量.一開始顯示中間部分.
    self.scrollView.contentOffset = CGPointMake(w, 0);

}

//當ScorllView滾動時調用.
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
    //獲取ScrollView X軸方向的偏移量
    CGFloat offsetX = scrollView.contentOffset.x;
    //記錄ScollView的寬度.
    CGFloat w = scrollView.frame.size.width;
    
    //設置循環(huán)利用View的位置.
    CGRect reuserImageVFrame = self.reuseImageV.frame;
    //記錄當前是第幾頁
    NSInteger index = 0;
    
    //判斷是向左滾動還是向右滾動
    if(offsetX > self.centerImageV.frame.origin.x){
        //如果是向右滾動
        //讓重復利用的圖片X在中間ImageView的后面.
        reuserImageVFrame.origin.x = CGRectGetMaxX(self.centerImageV.frame);
        //設置頁數(shù)+1.
        index = self.centerImageV.tag + 1;
        if (index > kCount - 1) {
            //如果頁數(shù)大于總個數(shù).從第0頁開始.
            index = 0;
        }
        
    }else{
        //如果是向左滾動.
        //設置重復利用的圖片X在左側,0的位置
        reuserImageVFrame.origin.x = 0;
        //設置頁數(shù)-1
        index = self.centerImageV.tag - 1;
        //如果頁數(shù)小于0頁.
        if(index < 0){
            //從最后一頁開始.
            index = kCount - 1;
        }
    }
    
    //設置重復利用的圖片的位置
    self.reuseImageV.frame = reuserImageVFrame;
    //記錄當前重復利用的圖片是第幾頁
    _reuseImageV.tag = index;
    NSLog(@"%ld",index);
    //設置圖片名稱
    NSString *imageName = [NSString stringWithFormat:@"0%ld",index];
    //設置重復利用的圖片
    self.reuseImageV.image = [UIImage imageNamed:imageName];
    
    //設置如果滾動到最左側,或者滾動的最右側.
    if(offsetX <= 0 || offsetX >= 2 * w){
        
        //交換中間的圖片 和 重復利用圖片兩個對象.
        UIImageView *temp = self.centerImageV;
        self.centerImageV = self.reuseImageV;
        self.reuseImageV = temp;
        
        //交換兩個圖片的位置.
        self.centerImageV.frame = self.reuseImageV.frame;
        //初始化scrollView的偏移量.一開始顯示中間部分.
        self.scrollView.contentOffset = CGPointMake(w, 0);
    }
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末宠页,一起剝皮案震驚了整個濱河市坞琴,隨后出現(xiàn)的幾起案子稚补,更是在濱河造成了極大的恐慌合冀,老刑警劉巖追城,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機辣往,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殖卑,“玉大人站削,你說我怎么就攤上這事》趸” “怎么了许起?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵十偶,是天一觀的道長。 經(jīng)常有香客問我园细,道長惦积,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任猛频,我火速辦了婚禮狮崩,結果婚禮上,老公的妹妹穿的比我還像新娘伦乔。我一直安慰自己厉亏,他們只是感情好董习,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布烈和。 她就那樣靜靜地躺著,像睡著了一般皿淋。 火紅的嫁衣襯著肌膚如雪招刹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天窝趣,我揣著相機與錄音疯暑,去河邊找鬼。 笑死哑舒,一個胖子當著我的面吹牛妇拯,可吹牛的內容都是我干的。 我是一名探鬼主播洗鸵,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼越锈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膘滨?” 一聲冷哼從身側響起甘凭,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎火邓,沒想到半個月后丹弱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡铲咨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年躲胳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纤勒。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡坯苹,死狀恐怖,靈堂內的尸體忽然破棺而出踊东,到底是詐尸還是另有隱情北滥,我是刑警寧澤刚操,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站再芋,受9級特大地震影響菊霜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜济赎,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一鉴逞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧司训,春花似錦构捡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至统扳,卻和暖如春喘帚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咒钟。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工吹由, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朱嘴。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓倾鲫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親萍嬉。 傳聞我的和親對象是個殘疾皇子乌昔,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容

  • 先上Unity里面的組件的詳情 接著是代碼 Item 暫時就這樣,還沒實際應用過帚湘,不過在demo里測了玫荣,感覺還行。
    煎蛋的少年閱讀 4,102評論 0 2
  • 用 scrollview 做大诸,循環(huán)展示捅厂,1~10個可以比較簡單,耗能比較少资柔,假設100焙贷,1000,等等或者更多贿堰,總...
    LeeDev閱讀 3,223評論 5 9
  • 最近關注了一位手賬達人辙芍,被她的手賬深深吸引著,畫質清晰,內容生動故硅,看得我也蠢蠢欲動庶灿,下定決心來使用手賬。 準備工作...
    梁小翠閱讀 991評論 5 11
  • 我想換個手機吃衅,等我有了錢往踢。 我想買個電腦,等我有了錢徘层。 我想去旅行下峻呕,等我有了錢。 我想做個網(wǎng)站趣效,等我有了錢瘦癌。 我...
    山楂葉閱讀 400評論 1 1
  • 友友們,可以將你的故事發(fā)送至三格格 ^_^這樣你就可以和一個不認識的朋友互相交換故事啦跷敬。
    原味三格格閱讀 817評論 0 0