iOS中的UIScrollView 滾動視圖

UIScrollView這個(gè)類(也就是滾動視圖)谚中,可以讓我們展示比window尺寸大的內(nèi)容缕碎。用戶可以通過手勢來實(shí)現(xiàn)視圖的滾動和縮放侥啤。
UIScrollView繼承于UIView殴胧,是UITableView和UITextView等UIKit類的父類荚坞。

基本用法

    //創(chuàng)建
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(50, 50, 314, 500)];
    //設(shè)置背景顏色
    scrollView.backgroundColor = [UIColor redColor];
    ```

 #####設(shè)置contentSize,這是UIScrollView的內(nèi)容視圖的尺寸今妄,通常contentSize大于UIScrollView的frame
scrollView.contentSize = CGSizeMake(314*3, 500);  //非常重要
######設(shè)置是否可以滾動
scrollView.scrollEnabled = YES;   // 默認(rèn)為YES
```
設(shè)置是否能夠整頁翻動
    scrollView.pagingEnabled = YES;   // 默認(rèn)為NO郑口。如果為YES,滑動會停止在視圖邊界長度的倍數(shù)上盾鳞。
    ```
######設(shè)置偏移量contentOffset
CGPoint類型犬性,默認(rèn)為CGPointZero
scrollView.contentOffset = CGPointMake(314, 200);
```
設(shè)置是否能點(diǎn)擊狀態(tài)欄滾動到頂部

默認(rèn)為 YES。點(diǎn)擊狀態(tài)欄時(shí), 如果屏幕上只有一個(gè)scrollsToTop屬性為YES的scrollView, 而且其代理的shouldScrollViewScrollToTop方法不返回NO, 那么這個(gè)scrollView會滾動到頂部

    //scrollView.scrollsToTop = NO;  
設(shè)置是否顯示滾動條
    //顯示水平方向的滾動條(默認(rèn)YES)
    scrollView.showsHorizontalScrollIndicator = NO;
    //顯示垂直方向的滾動條(默認(rèn)YES)
    scrollView.showsVerticalScrollIndicator = NO;
    ```
    
#####設(shè)置是否反彈
scrollView.bounces = NO; // 默認(rèn)為YES腾仅。如果該屬性為YES乒裆,視圖滾動時(shí)可以越過邊界,越過邊界后會被彈回推励。
如果bounces設(shè)為NO鹤耍,以下兩個(gè)屬性不論是不是YES都不會奏效:
//控制滾動視圖遇到垂直方向是否反彈
scrollView.alwaysBounceVertical = YES;// 默認(rèn)為NO
//如果該屬性和bounces同時(shí)為YES,那么即使contentSize的height小于frame的height验辞,豎直方向的拖拽也是允許的稿黄。

//控制滾動視圖遇到水平方向是否反彈    
scrollView.alwaysBounceHorizontal = YES;//默認(rèn)為NO
//如果該屬性和bounces同時(shí)為YES,那么即使contentSize的width小于frame的width跌造,水平方向的拖拽也是允許的杆怕。

##縮放功能

//設(shè)置最小縮放比例
scrollView.minimumZoomScale = 0.5;   //(此處設(shè)置的大小最小變?yōu)樵瓉淼?.5*0.5倍)
//設(shè)置最大縮放比例
scrollView.maximumZoomScale = 2;     //類型是CGFloat
                                 //zoomScale  // default is 1.0
//設(shè)置代理(若要實(shí)現(xiàn)縮放功能必須實(shí)現(xiàn)代理方法)
scrollView.delegate = self;
//縮放的時(shí)候是否會反彈
scrollView.bouncesZoom = YES;  // default is YES.
//獲取縮放狀態(tài)(只讀)
NSLog(@"%d",scrollView.zooming);  // zooming: returns YES if user in zoom gesture


//3 添加視圖
[self.view addSubview:scrollView];

UIImageView  * imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"dani.jpg"]];
                                  //注意UIImageView
imgView.frame = CGRectMake(0, 0, 314, 500);
[scrollView addSubview:imgView];   //addSubview相當(dāng)于往數(shù)組里加元素!
UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(314, 0, 314, 200)];
aView.backgroundColor = [UIColor yellowColor];
[scrollView addSubview:aView];


self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"2"]];

#UIPageControl

######滾動視圖經(jīng)常與UIPageControl一起使用壳贪。
######UIPageControl繼承于UIControl陵珍。
先添加兩個(gè)屬性
@property(nonatomic,strong)UIScrollView *scrollView;
@property(nonatomic,retain)UIPageControl *pageControl;
######UIPageControl的使用:
//創(chuàng)建
UIPageControl * pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(50, 600, 314, 34)];

//背景顏色
pageControl.backgroundColor = [UIColor blackColor];

//總頁數(shù)
pageControl.numberOfPages = 3;   //NSInteger類型

//當(dāng)前第幾頁(范圍是 0 ~ (numberOfPages - 1))
pageControl.currentPage = 0;  //NSInteger類型

//只有一頁的時(shí)候隱藏
pageControl.hidesForSinglePage = YES;//默認(rèn)為NO

//設(shè)置當(dāng)前頁指示器的顏色
pageControl.currentPageIndicatorTintColor = [UIColor redColor];

//設(shè)置指示器的顏色
pageControl.pageIndicatorTintColor = [UIColor whiteColor];

//添加點(diǎn)擊事件
[pageControl addTarget:self action:@selector(pageClick:) forControlEvents:UIControlEventValueChanged];

//設(shè)為屬性
self.scrollView = scrollView;
self.pageControl = pageControl;

//3 添加到視圖
[self.view addSubview:pageControl];


##UIPageControl點(diǎn)擊事件
點(diǎn)擊UIPageControl后,滾動視圖顯示相應(yīng)頁面

-(void)pageClick:(UIPageControl *)sender{
//1 獲取當(dāng)前顯示第幾頁
NSInteger currentPage = sender.currentPage;
//2 設(shè)置scrollView的偏移量
self.scrollView.contentOffset = CGPointMake(314 * currentPage, 0);
}




#UIScrollViewDelegate


######如果想實(shí)現(xiàn)縮放违施,就必須實(shí)現(xiàn)viewForZoomingInScrollView這個(gè)代理方法互纯,返回要進(jìn)行縮放的視圖。如果返回nil醉拓,則什么都不會被觸發(fā)伟姐。例:

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return scrollView.subviews[0];
}

###以下的四個(gè)代理方法在拖拽過程中會依次被觸發(fā):
######即將開始拖拽

-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

}

######停止拖拽時(shí)觸發(fā)

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

}

######即將進(jìn)行減速

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{

}```

減速結(jié)束

減速結(jié)束時(shí),我們可以通過contentOffset判斷當(dāng)前在那一頁亿卤,進(jìn)而改變pageControl的currentPage屬性愤兵。

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    //獲取偏移量
    NSInteger currentPage = scrollView.contentOffset.x/314;
    //改變pageControl的顯示
    self.pageControl.currentPage = currentPage;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市排吴,隨后出現(xiàn)的幾起案子秆乳,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屹堰,死亡現(xiàn)場離奇詭異肛冶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扯键,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進(jìn)店門睦袖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荣刑,你說我怎么就攤上這事馅笙。” “怎么了厉亏?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵董习,是天一觀的道長。 經(jīng)常有香客問我爱只,道長皿淋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任恬试,我火速辦了婚禮窝趣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘忘渔。我一直安慰自己高帖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布畦粮。 她就那樣靜靜地躺著,像睡著了一般乖阵。 火紅的嫁衣襯著肌膚如雪宣赔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天瞪浸,我揣著相機(jī)與錄音儒将,去河邊找鬼。 笑死对蒲,一個(gè)胖子當(dāng)著我的面吹牛钩蚊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹈矮,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼砰逻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了泛鸟?” 一聲冷哼從身側(cè)響起蝠咆,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后刚操,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闸翅,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年菊霜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坚冀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鉴逞,死狀恐怖记某,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情华蜒,我是刑警寧澤辙纬,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站叭喜,受9級特大地震影響贺拣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捂蕴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一譬涡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啥辨,春花似錦涡匀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至级乍,卻和暖如春舌劳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玫荣。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工甚淡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捅厂。 一個(gè)月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓贯卦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親焙贷。 傳聞我的和親對象是個(gè)殘疾皇子撵割,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評論 2 355

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