UIScrollView的屬性總結html
=====屬性=====做用===ios
CGPoint contentOffSet----------監控目前滾動的位置app
CGSize contentSize--------------滾動範圍的大小測試
UIEdgeInsets contentInset---------視圖在scrollView中的位置動畫
id<UIScrollerViewDelegate> delegate------設置協議3d
BOOL directionalLockEnabled---------指定控件是否只能在一個方向上滾動htm
BOOL bounces------------控制控件遇到邊框是否反彈對象
BOOL alwaysBounceVertical-------控制垂直方向遇到邊框是否反彈blog
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--------------控制控件滾動到頂部
這裏把UIScrollView的幾個要點總結下:
從你的手指touch屏幕開始,scrollView開始一個timer,若是:
1. 150ms內若是你的手指沒有任何動做,消息就會傳給subView。
2. 150ms內手指有明顯的滑動(一個swipe動做),scrollView就會滾動,消息不會傳給subView,這裏就是產生問題二的緣由。
3. 150ms內手指沒有滑動,scrollView將消息傳給subView,可是以後手指開始滑動,scrollView傳送touchesCancelled消息給subView,而後開始滾動。
觀察下tableView的狀況,你先按住一個cell,cell開始高亮,手不要放開,開始滑動,tableView開始滾動,高亮取消。
4.delaysContentTouches的做用:
這個標誌默認是YES,使用上面的150ms的timer,若是設置爲NO,touch事件當即傳遞給subView,不會有150ms的等待。
5.cancelsTouches的做用:
這個標準默認爲YES,若是設置爲NO,這消息一旦傳遞給subView,這scroll事件不會再發生。
======UIScrollViewDelegate 協議========
//1. scrollView滾動時,就調用該方法。任何offset值改變都調用該方法。即滾動過程當中,調用屢次
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
// 從中能夠讀取contentOffset屬性以肯定其滾動到的位置。
// 注意:當ContentSize屬性小於Frame時,將不會出發滾動
NSLog(@"=====視圖正在滾動====");
}
// 2. 當開始滾動視圖時,執行該方法。一次有效滑動(開始滑動,滑動一小段距離,只要手指不鬆開,只算一次滑動),只執行一次。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@"----將要開始拖動--------");
}
//3. 滑動scrollView,而且手指離開時執行。一次有效滑動,只執行一次。
// 當pagingEnabled屬性爲YES時,不調用,該方法
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
//第一個參數 是它自己
//第二個參數 是慣性值
//第三個參數 是中止的點 提早就算好了中止的位置
NSLog(@"---------將要中止拖動-----------");
}
//4. 滑動視圖,當手指離開屏幕那一霎那,調用該方法。一次有效滑動,只執行一次。
// decelerate,指代,當咱們手指離開那一瞬後,視圖是否還將繼續向前滾動(一段距離),通過測試,decelerate=YES
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSLog(@"----------已經中止拖動-------------");
}
//5. 滑動減速時調用該方法
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
NSLog(@"------將要開始減速------");
}
//6. 滾動視圖減速完成,滾動將中止時,調用該方法。一次有效滑動,只執行一次
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//這裏能夠取到當前是第幾頁
_index = scrollView.contentOffset.x / scrollView.frame.size.width;
// scrollView.contentOffset 不帶動畫
//設置偏移量 動畫版
[scrollView setContentOffset:CGPointMake(150, 150) animated:YES];
NSLog(@"------------已經結束減速-------------");
}
//7. 當滾動視圖動畫完成後,調用該方法,若是沒有動畫,那麼該方法將不被調用
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
NSLog(@"已經結束位移動畫");
}
//8. 當scrollView縮放時,調用該方法。在縮放過程當中,回屢次調用
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"發生縮放");
}
//9. 返回將要縮放的UIView對象。要執行屢次
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
return scrollView.subviews[0];
}
//10. 當將要開始縮放時,執行該方法。一次有效縮放,就只執行一次
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
//將要開始縮放
}
//11. 當縮放結束後,而且縮放大小回到minimumZoomScale與maximumZoomScale之間後(咱們也許會超出縮放範圍),調用該方法
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{
//將要結束縮放
}
//12. 指示當用戶點擊狀態欄後,滾動視圖是否可以滾動到頂部。須要設置滾動視圖的屬性:_scrollView.scrollsToTop=YES;
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
return YES;
}
//13. 當滾動視圖滾動到最頂端後,執行該方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
//已經回到頂點
}
下面我就說一下scrollView的用法,設置app的導航頁,帶有小白點
1.遵循協議--<UIScrollViewDelegate>
2.建立scrollView
通常狀況下,咱們建立一個UIScrollView全局變量和UIPageControl的全局變量
以下圖:
初始化
===添加圖片視圖===
這一步,內容較多
重點的地方都標註了
【注意】設置_scrollView的contentSize,若是不設置,滾動視圖不能左右滑動
其餘幾個屬性也很重要,頁須要設置,都作了註釋
代碼以下圖:
添加小白點,滑動圖片後會隨着變更
建立小白點
滑動圖片後的回調方法