//
// 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
ScrollView循環(huán)利用
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殖卑,“玉大人站削,你說我怎么就攤上這事》趸” “怎么了许起?”我有些...
- 文/不壞的土叔 我叫張陵十偶,是天一觀的道長。 經(jīng)常有香客問我园细,道長惦积,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任猛频,我火速辦了婚禮狮崩,結果婚禮上,老公的妹妹穿的比我還像新娘伦乔。我一直安慰自己厉亏,他們只是感情好董习,可當我...
- 文/花漫 我一把揭開白布烈和。 她就那樣靜靜地躺著,像睡著了一般皿淋。 火紅的嫁衣襯著肌膚如雪招刹。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼越锈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膘滨?” 一聲冷哼從身側響起甘凭,我...
- 正文 年R本政府宣布,位于F島的核電站再芋,受9級特大地震影響菊霜,放射性物質發(fā)生泄漏。R本人自食惡果不足惜济赎,卻給世界環(huán)境...
- 文/蒙蒙 一鉴逞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧司训,春花似錦构捡、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至统扳,卻和暖如春喘帚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咒钟。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 先上Unity里面的組件的詳情 接著是代碼 Item 暫時就這樣,還沒實際應用過帚湘,不過在demo里測了玫荣,感覺還行。
- 用 scrollview 做大诸,循環(huán)展示捅厂,1~10個可以比較簡單,耗能比較少资柔,假設100焙贷,1000,等等或者更多贿堰,總...