- UIScrollView 的contentSize:設(shè)置UIScrollView的內(nèi)容尺寸大小
- UIScrollView的frame :設(shè)置UIScrollView的位置和尺寸
- UIScrollView的contentInset:該屬性是一個UIEdeInsets類型的值,UIEdeInsets并不是一個類返咱,而是一個結(jié)構(gòu)體砚哗,它包含top、left砸捏、buttom衷恭、right四個成員變量勿璃,分別代表UIScrollView所需要顯示內(nèi)容在上揭璃、下、左悔雹、右的留白复哆。
- UIScrollView的contentOffset:該屬性
UIScrollView的一些屬性值
tracking
當(dāng) touch 后還沒有拖動的時候值是YES,否則NO
scroller.pagingEnabled=YES;
UIScrollView會被分割成多個獨立頁面腌零,用戶的滾動體驗則變成了頁面翻轉(zhuǎn)
zoomBouncing
當(dāng)內(nèi)容放大到最大或者最小的時候值是 YES梯找,否則 NO
zooming
當(dāng)正在縮放的時候值是 YES,否則 NO
decelerating
當(dāng)滾動后益涧,手指放開但是還在繼續(xù)滾動中锈锤。這個時候是 YES,其它時候是 NO
decelerationRate
設(shè)置手指放開后的減速率
maximumZoomScale
一個浮點數(shù)饰躲,表示能放最大的倍數(shù)
minimumZoomScale
一個浮點數(shù)牙咏,表示能縮最小的倍數(shù)
pagingEnabled
當(dāng)值是 YES 會自動滾動到 subview 的邊界臼隔。默認是NO
scrollEnabled
決定是否可以滾動
delaysContentTouches
是個布爾值嘹裂,當(dāng)值是 YES 的時候,用戶觸碰開始摔握,scroll view要延遲一會寄狼,看看是否用戶有意圖滾動。假如滾動了氨淌,那么捕捉 touch-down 事件泊愧,否則就不捕捉。假如值是NO盛正,當(dāng)用戶觸碰删咱, scroll view 會立即觸發(fā) touchesShouldBegin:withEvent:inContentView:,默認是 YES
canCancelContentTouches
當(dāng)值是 YES 的時候豪筝,用戶觸碰后痰滋,然后在一定時間內(nèi)沒有移動,scrollView 發(fā)送 tracking events续崖,然后用戶移動手指足夠長度觸發(fā)滾動事件敲街,這個時候,scrollView 發(fā)送了 touchesCancelled:withEvent: 到 subview严望,然后 scroView 開始滾動多艇。假如值是 NO,scrollView 發(fā)送 tracking events 后像吻,就算用戶移動手指峻黍,scrollView 也不會滾動复隆。
contentSize
里面內(nèi)容的大小,也就是可以滾動的大小姆涩,默認是0昏名,沒有滾動效果。
showsHorizontalScrollIndicator
滾動時是否顯示水平滾動條
showsVerticalScrollIndicator
滾動時是否顯示垂直滾動條
bounces(彈簧效果)
默認是 yes阵面,就是滾動超過邊界會反彈有反彈回來的效果轻局。假如是 NO,那么滾動到達邊界會立刻停止样刷。
bouncesZoom
和 bounces 類似,區(qū)別在于:這個效果反映在縮放上面仑扑,假如縮放超過最大縮放,那么會反彈效果置鼻;假如是 NO镇饮,則到達最大或者最小的時候立即停止。
directionalLockEnabled
默認是 NO箕母,可以在垂直和水平方向同時運動储藐。當(dāng)值是 YES 時,假如一開始是垂直或者是水平運動嘶是,那么接下來會鎖定另外一個方向的滾動钙勃。 假如一開始是對角方向滾動,則不會禁止某個方向
indicatorStyle
滾動條的樣式聂喇,基本只是設(shè)置顏色辖源。總共3個顏色:默認希太、黑克饶、白
scrollIndicatorInsets
設(shè)置滾動條的位置
UIScrollerViewDelegate代理方法
<pre>
//scrollView滾動時,就調(diào)用該方法誊辉。任何offset值改變都調(diào)用該方法矾湃。即滾動過程中,調(diào)用多次
-
(void)scrollViewDidScroll:(UIScrollView*)scrollView{
NSLog(@"scrollViewDidScroll");
CGPoint point=scrollView.contentOffset;
NSLog(@"%f,%f",point.x,point.y);
// 從中可以讀取contentOffset屬性以確定其滾動到的位置堕澄。// 注意:當(dāng)ContentSize屬性小于Frame時邀跃,將不會出發(fā)滾動
}
</pre>
<pre>
// 當(dāng)scrollView縮放時,調(diào)用該方法奈偏。在縮放過程中坞嘀,回多次調(diào)用
-
(void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"scrollViewDidScroll");
float value=scrollView.zoomScale;
NSLog(@"%f",value);
}
</pre>
<pre>
// 當(dāng)開始滾動視圖時,執(zhí)行該方法惊来。一次有效滑動(開始滑動丽涩,滑動一小段距離,只要手指不松開,只算一次滑動)矢渊,只執(zhí)行一次继准。
-
(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@"scrollViewWillBeginDragging");
}
</pre>
<pre>
// 滑動scrollView,并且手指離開時執(zhí)行矮男。一次有效滑動移必,只執(zhí)行一次。
// 當(dāng)pagingEnabled屬性為YES時毡鉴,不調(diào)用崔泵,該方法
-
(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
NSLog(@"scrollViewWillEndDragging");
}
</pre>
<pre>
// 滑動視圖,當(dāng)手指離開屏幕那一霎那猪瞬,調(diào)用該方法憎瘸。一次有效滑動,只執(zhí)行一次陈瘦。
// decelerate,指代幌甘,當(dāng)我們手指離開那一瞬后,視圖是否還將繼續(xù)向前滾動(一段距離)痊项,經(jīng)過測試锅风,decelerate=YES
-
(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSLog(@"scrollViewDidEndDragging");
if (decelerate) {
NSLog(@"decelerate");
}else{
NSLog(@"no decelerate");}
CGPoint point=scrollView.contentOffset;
NSLog(@"%f,%f",point.x,point.y);
}
</pre>
<pre>
// 滑動減速時調(diào)用該方法。
-
(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
NSLog(@"scrollViewWillBeginDecelerating");
// 該方法在scrollViewDidEndDragging方法之后鞍泉。
}
</pre>
<pre>
// 滾動視圖減速完成皱埠,滾動將停止時,調(diào)用該方法塞弊。一次有效滑動漱逸,只執(zhí)行一次泪姨。
-
(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSLog(@"scrollViewDidEndDecelerating");
[_scrollView setContentOffset:CGPointMake(0, 500) animated:YES];
}
</pre>
<pre>
// 當(dāng)滾動視圖動畫完成后游沿,調(diào)用該方法,如果沒有動畫肮砾,那么該方法將不被調(diào)用
-
(void)scrollViewDidEndScrollingAnimation:(UIScrollView\ *)scrollView{
NSLog(@"scrollViewDidEndScrollingAnimation");
// 有效的動畫方法為:
// - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 方法
// - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 方法
}
</pre>
<pre>
// 返回將要縮放的UIView對象诀黍。要執(zhí)行多次
-
(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
NSLog(@"viewForZoomingInScrollView");
return self.imgView;
}
</pre>
<pre>
// 當(dāng)將要開始縮放時,執(zhí)行該方法仗处。一次有效縮放眯勾,就只執(zhí)行一次。
-
(void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView\ *)view{
NSLog(@"scrollViewWillBeginZooming");
}
</pre>
<pre>
// 當(dāng)縮放結(jié)束后婆誓,并且縮放大小回到minimumZoomScale與maximumZoomScale之間后(我們也許會超出縮放范圍)吃环,調(diào)用該方法。
-
(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{
NSLog(@"scrollViewDidEndZooming");
}
</pre>
<pre>
// 指示當(dāng)用戶點擊狀態(tài)欄后洋幻,滾動視圖是否能夠滾動到頂部郁轻。
//如果你不是完全滾動到滾軸視圖的頂部,你可以輕點狀態(tài)欄,那個可視的滾軸視圖會一直滾動到頂部好唯,那是默認行為竭沫,你可以通過該方法返回NO來關(guān)閉它
//需要設(shè)置滾動視圖的屬性:_scrollView.scrollsToTop=YES;
-
(BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
return YES;
}
</pre>
<pre>
// 當(dāng)滾動視圖滾動到最頂端后,執(zhí)行該方法
-
(void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
NSLog(@"scrollViewDidScrollToTop");
}
</pre>