你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS —) UIScrollVeiw

iOS —) UIScrollVeiw

編輯:IOS開發綜合

一、UIScrollView簡述:

作用:
UIScrollView可以讓一個大小超出展示范圍的UIView,通過手指的拖動,展示出這個UIView的其他部分,並且可以通過手勢,對UIView進行縮放
讀寫屬性

CGFloat screenW = [UIScreen mainScreen].bounds.size.width;
    CGFloat screenH = [UIScreen mainScreen].bounds.size.height;
    UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, screenW,screenH)];

    //(CGSize類型):告訴UIScrollView所有內容的尺?寸,也就是告訴 它滾動的范圍(能滾多遠,滾到哪?裡是盡頭)
    scrollView.contentSize = CGSizeMake(screenW,screenH);

    //(CGPoint類型):用來表?示UIScrollView滾動的位置,(可以手動設置)
    scrollView.contentOffset = CGPointMake(100, 100);

    //(UIEdgeInsets類型) 這個屬性能夠在UIScrollView的4周增加額外的滾動區域
    scrollView.contentInset = UIEdgeInsetsMake(0, 0, 20, 20);

    //(BOOL類型): 彈簧效果
    scrollView.bounces = NO;
    //(BOOL類型):  是否可以滾動
    scrollView.scrollEnabled = NO;
    //(BOOL類型): 橫向與縱向的滾動條是否顯示
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.showsVerticalScrollIndicator = NO;

其他屬性

scrollView.tracking;//當touch後還沒有拖動的時候,值是YES,否則NO;

    scrollView.zoomBouncing;//當內容放大到最大或者最小的時候,值是YES,否則NO
    scrollView.zooming;//當正在縮放的時候,值是YES,否則NO

    scrollView.decelerating;//當滾動後,手指放開,但是還在繼續滾動中,這個時候是 YES,其他是NO
    scrollView.decelerationRate;//設置手指放開後的減速率


    scrollView.maximumZoomScale;//一個浮點數,表示能放最大的倍數
    scrollView.minimumZoomScale;//一個浮點數,表示能縮最小的倍數


    scrollView.pagingEnabled;//當值是YES,會自動滾動到subview的邊界,默認是NO
    scrollView.scrollEnabled;//決定是否可以滾動


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


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


    scrollView.contentSize;//裡面內容的大小,也就是可以滾動的大小,默認是0,沒有滾動效果。

    scrollView.showsHorizontalScrollIndicator;//滾動時,是否顯示水平滾動條

    scrollView.showsVerticalScrollIndicator;//滾動時,是否顯示垂直滾動條

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

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

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

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

    scrollView.scrollIndicatorInsets;
    //設置滾動條的位置

二、注意事項:
1.不能滾動:
1. contentSize 這個屬性,比uiscrollview的frame要小, 無需滾動, 自然就滾動不了。
2. scrollenabled 這個屬性,標識著是否允許滾動,要言設成yes

另外還有一些比較隱蔽的原因. 如果這個scrollView是在IB裡面生成的話,還得手動設置它的contentSize,並且不能在initWithNibName:bundle:裡面設置,因為The nib file you specify is not loaded right away. It is loaded the first time the view controller’s view is accessed. If you want to perform additional initialization after the nib file is loaded, override theviewDidLoad method and perform your tasks there.

三、代理方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
// any offset changes 只要scrollView的content 這個方法在任何方式觸發 contentOffset 
// 變化的時候都會被調用(包括用戶拖動,減速過程,直接通過代碼設置等),可以用於監控 contentOffset 
// 的變化,並根據當前的 contentOffset 對其他 view 做出隨動調整。
// called on start of dragging (may require some time and or distance to move)
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; 
// 用戶開始拖動 scroll view 的時候被調用,可能需要一些時間和距離移動之後才會觸發。
// called on finger up if the user dragged. velocity is in points/millisecond. 
// targetContentOffset may be changed to adjust where the scroll view comes to rest
-  (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
// 在 didEndDragging 前被調用,當 willEndDragging 方法中 velocity 為 CGPointZero
//(結束拖動時兩個方向都沒有速度)時,didEndDragging 中的 decelerate 為 NO,即沒有減速過程,
//willBeginDecelerating 和 didEndDecelerating 也就不會被調用。反之,
// 當 velocity 不為 CGPointZero 時,scroll view 會以 velocity 為初速度,
// 減速直到 targetContentOffset。


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
// 在用戶結束拖動後被調用,decelerate 為 YES 時,
// 結束拖動後會有減速過程。注,在 didEndDragging 之後,如果有減速過程,
// scroll view 的 dragging 並不會立即置為 NO,而是要等到減速結束之後,
// 所以這個 dragging 屬性的實際語義更接近 scrolling。

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;   // 減速動畫開始前被調用。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;      
// 減速動畫結束時被調用,這裡有一種特殊情況:當一次減速動畫尚未結束的時候再次 drag scroll view,
// didEndDecelerating 不會被調用,並且這時 scroll view 的 dragging 和 decelerating 屬性都是 YES。
// 新的 dragging 如果有加速度,那麼 willBeginDecelerating 會再一次被調用,然後才是 didEndDecelerating;
// 如果沒有加速度,雖然 willBeginDecelerating 不會被調用,但前一次留下的 didEndDecelerating 會被調用      

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; 
// called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating

- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2); 
// any zoom scale changes view縮放改變的時候調用。

- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;     
// return a view that will be scaled. if delegate returns nil, nothing happens
告訴代理要縮放那個控件。 

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2); 
// called before the scroll view begins zooming its content縮放開始的時候調用

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; 
// scale between minimum and maximum. called after any 'bounce' animations縮放完畢的時候調用。

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;   // return a yes if you want to scroll to the top. if not defined, assumes YES- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;      
// called when scrolling animation finished. may be called immediately if already at top滾動動畫完成時調用。

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved