UIScrollView的屬性總結

contentSize是scrollview能夠滾動的區域,好比frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),表明你的scrollview能夠上下滾動,滾動區域爲frame大小的兩倍。html

 

contentOffset是scrollview當前顯示區域頂點相對於frame頂點的偏移量,好比上個例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480iphone

 

contentInset是scrollview的contentview的頂點相對於scrollview的位置,例如你的contentInset = (0 ,100),那麼你的contentview就是從scrollview的(0 ,100)開始顯示post

 

 

另外UITableView是UIScrollView的子類,它們在上述屬性又有所不一樣,tabelview的contentsize是由它的下列方法共同實現的url

- (NSInteger)numberOfSections;spa

- (NSInteger)numberOfRowsInSection:(NSInteger)section;.net

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;htm

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;blog

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;事件

它會自動計算全部的高度和來作爲它的contentsize的height.ip

 

例如你在delegate方法

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 100;

}

那麼你的tabelview的contentsize就是(320, 4400)

posted @ 2011-10-13 17:36 zcbbin 閱讀(194) 評論(2)  編輯
 

UIScrollView 原理   

 
 
scroll view 原理
//做者:禚來強 iphone開發q*****:79190809 郵箱: zhuolaiqiang@gmail.com轉帖請保留
demo 能夠到個人博客 http://blog.csdn.net/diyagoanyhacker/article/list/10
在滾動過程中,實際上是在修改原點座標

當手指觸摸後, scroll view會暫時攔截觸摸事件,使用一個
計時器,假如在計時器到點後,沒有發生手指移動事件,
那麼,scroll view發送tracking events到被點擊的subview
假如在計時器到點前,發生了移動事件,那麼 scroll view 取消tracking
本身發生滾動

子類能夠重載touchesShouldBegin:withEvent:inContentView: 決定本身是否接收touch事件
pagingEnabled當值是YES,會自動滾動到subview的邊界,默認是NO
touchesShouldCancelInContentView: 開始發送tracking messages消息給subview的時候
調用這個方法,決定是否發送tracking messages消息到subview,假如返回NO,發送,YES則不發送
假如 canCancelContentTouches屬性是NO,則不調用這個方法
來影響如何處理滾動手勢

scroll view還處理縮放和平移手勢
要實現縮放和平移,必須實現委託viewForZoomingInScrollView:
scrollViewDidEndZooming:withView:atScale:
兩個方法,另外 maximumZoomScale和minimumZoomScale兩個屬性要不同 

幾個屬性
tracking
當touch後尚未拖動的時候,值是YES,不然NO


zoomBouncing
當內容放大到最大或者最小的時候,值是YES,不然NO


zooming
當正在縮放的時候,值是YES,不然NO

decelerating

當滾動後,手指放開,可是還在繼續滾動中,這個時候是 YES,其餘是NO

decelerationRate

設置手指放開後的減速率


maximumZoomScale
一個浮點數,表示能放最大的倍數


minimumZoomScale 
一個浮點數,表示能縮最小的倍數


pagingEnabled
當值是YES,會自動滾動到subview的邊界,默認是NO


scrollEnabled
決定是否能夠滾動

delaysContentTouches

是個布爾值,當值是YES的時候,用戶觸碰開始,scroll view要延遲一會,看看是否用戶有意圖滾動,假如滾動了,那麼捕捉touch-down事件,不然就不捕捉, 假如值是NO,當用戶觸碰, scroll view會當即觸發touchesShouldBegin:withEvent:inContentView:, 默認是YES

canCancelContentTouches
當值是YES的時候,用戶觸碰後,而後在必定時間內沒有移動,scrollView發送tracking events,而後用戶移動手指足夠長度觸發滾動事件,這個時候,scrollView發送了touchesCancelled:withEvent: 到subview,而後scroView開始滾動
假如值是NO,scrollView發送tracking events後,就算用戶移動手指,scrollView也不會滾動

contentSize
裏面內容的大小,也就是能夠滾動的大小,默認是0,沒有滾動效果。

showsHorizontalScrollIndicator
滾動時,是否顯示水平滾動條

showsVerticalScrollIndicator
滾動時,是否顯示垂直滾動條

bounces
默認是yes,就是滾動超過邊界,會反彈有反彈回來的效果,假如是 NO,那麼滾動到達邊界,那麼會連忙中止

bouncesZoom
和bounces相似,區別在於,這個效果反映在縮放上面,假如縮放超過最大縮放,那麼會反彈效果,假如是NO,則到達最大或者最小的時候,當即中止

directionalLockEnabled
默認是NO, 能夠在垂直和水平方向同時運動, 當值是YES, 假如一開始是垂直或者是水平運動,那麼接下來會鎖定另一個方向的滾動, 假如一開始是對角方向滾動,則不會禁止某個方向

indicatorStyle
滾動條的樣式,基本只是設置顏色,總共3個顏色,默認,黑色的,白色的

scrollIndicatorInsets
設置滾動條的位置
 
 
 
 
 
 

 

屬性 做用
CGPoint contentOffSet 監控目前滾動的位置
CGSize contentSize 滾動範圍的大小
UIEdgeInsets contentInset 視圖在scrollView中的位置
id<UIScrollerViewDelegate>
delegate
設置協議
BOOL directionalLockEnabled 指定控件是否只能在一個方向上滾動
BOOL bounces 控制控件遇到邊框是否反彈
BOOL alwaysBounceVertical 控制垂直方向遇到邊框是否反彈
BOOL alwaysBounceHorizontal 控制水平方向遇到邊框是否反彈
BOOL pagingEnabled 控制控件是否整頁翻動
BOOL scrollEnabled 控制控件是否能滾動
BOOL showsHorizontalScrollIndicator 控制是否顯示水平方向的滾動條
BOOL
showsVerticalScrollIndicator
控制是否顯示垂直方向的滾動條
UIEdgeInsets scrollIndicatorInsets 指定滾動條在scrollerView中的位置
UIScrollViewIndicatorStyle
indicatorStyle
設定滾動條的樣式
float decelerationRate 改變scrollerView的減速點位置
BOOL tracking 監控當前目標是否正在被跟蹤
BOOL dragging 監控當前目標是否正在被拖拽
BOOL decelerating 監控當前目標是否正在減速
BOOL delaysContentTouches 控制視圖是否延時調用開始滾動的方法
BOOL canCancelContentTouches 控制控件是否接觸取消touch的事件
float minimumZoomScale 縮小的最小比例
float maximumZoomScale 放大的最大比例
float zoomScale 設置變化比例
BOOL bouncesZoom 控制縮放的時候是否會反彈
BOOL zooming 判斷控件的大小是否正在改變
BOOL zoomBouncing 判斷是否正在進行縮放反彈
BOOL scrollsToTop 控制控件滾動到頂部
相關文章
相關標籤/搜索