天天看點

[轉載]UIScrollView的屬性總結

作者:iphone開發

contentSize是scrollview可以滾動的區域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滾動,滾動區域為frame大小的兩倍。

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

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

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

- (NSInteger)numberOfSections;

- (NSInteger)numberOfRowsInSection:(NSInteger)section;

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

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

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

它會自動計算所有的高度和來做為它的contentsize的height.

例如你在delegate方法

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

    return 100;

}

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

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

UIScrollView 原理

UIScrollView 原理   

scroll view 原理

//作者:禚來強 iphone開發q*****:79190809 郵箱:[email protected]轉帖請保留

demo 可以到我的部落格

在滾動過程當中,其實是在修改原點坐标

當手指觸摸後, 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

控制是否顯示垂直方向的滾動條

UIEdgeInsets scrollIndicatorInsets

指定滾動條在scrollerView中的位置

UIScrollViewIndicatorStyle

設定滾動條的樣式

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

控制控件滾動到頂部

網絡上志同道合,我們一起學習網絡安全,一起進步,QQ群:694839022