UIScrollView

一、簡介

<<繼承關系:UIScrollView --> UIView?-->UIResponder-->NSObject

<<是UITableView和UITextView等UIKit類的父類

<<UIScrollView這個類(也就是滾動視圖),可以讓我們展示比window尺寸大的內容。用戶可以通過手勢來實現視圖的滾動和縮放。

格式為

1--> 設置滾動條樣式(屬性的作用)

typedef NS_ENUM(NSInteger, UIScrollViewIndicatorStyle) {

? ? UIScrollViewIndicatorStyleDefault,? ? // black with white border. good against any background

? ? UIScrollViewIndicatorStyleBlack,? ? ? // black only. smaller. good against a white background

? ? UIScrollViewIndicatorStyleWhite? ? ? ? // white only. smaller. good against a black background

};(如果屬性有枚舉類型的話,這里會有枚舉類型說明)

scrollView.indicatorStyle?=?UIScrollViewIndicatorStyleDefault;??(這是具體的例子)

@property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle; // default is UIScrollViewIndicatorStyleDefault(這是屬性的說明)

二、UIScrollView的內容視圖屬性(屬性的順序與蘋果API一致)

1-->設置偏移量

scrollView.contentOffset = CGPointMake(314,200);

@property(nonatomic) CGPoint contentOffset; // 默認為 CGPointZero

2-->設置UIScrollView的內容視圖的尺寸

scrollView.contentSize =CGSizeMake(314*3,500);//非常重要,這是UIScrollView的內容視圖的尺寸,通常contentSize大于UIScrollView的frame

@property(nonatomic) CGSize contentSize; // 默認為CGSizeZero

3、設置內容的邊緣

scrollView.contentInset =UIEdgeInsetsMake(0,50,50,0);

@property(nonatomic) UIEdgeInsets contentInset; //默認UIEdgeInsetsZero。在內容周圍添加額外的滾動區域。

4、獲得要繪制內容的調整區域

UIEdgeInsets edge= self.scrollView.adjustedContentInset;

@property(nonatomic, readonly) UIEdgeInsets adjustedContentInset API_AVAILABLE(ios(11.0),tvos(11.0));

參見:你可能需要為你的 App 適配 iOS 11

5、感知adjustedContentInset的變化,觸發的方法

//重寫方法

- (void)adjustedContentInsetDidChange

{

[super adjustedContentInsetDidChange];


//執行操作...

}

- (void)adjustedContentInsetDidChange API_AVAILABLE(ios(11.0),tvos(11.0)) NS_REQUIRES_SUPER;//UIScrollViewDelegate中的scrollViewDidChangeAdjustedContentInset方法同樣能實現

6、設置UIScrollView的調整行為

typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {

? ? UIScrollViewContentInsetAdjustmentAutomatic, //和scrollableAxes一樣,scrollView會自動計算和適應頂部和底部的內邊距并且在scrollView?不可滾動時,也會設置內邊距.

? ? UIScrollViewContentInsetAdjustmentScrollableAxes, //自動計算內邊距.

? ? UIScrollViewContentInsetAdjustmentNever, //不計算內邊距

? ? UIScrollViewContentInsetAdjustmentAlways, //根據safeAreaInsets 計算內邊距

} API_AVAILABLE(ios(11.0),tvos(11.0));

if(@available(iOS11.0, *)) {

self.tableView.contentInsetAdjustmentBehavior =UIScrollViewContentInsetAdjustmentNever;

}else{

self.automaticallyAdjustsScrollViewInsets =NO;

}

@property(nonatomic) UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior API_AVAILABLE(ios(11.0),tvos(11.0));//默認?UIScrollViewContentInsetAdjustmentAutomatic.

7、描述內容布局

? if (@available(iOS 11.0, *)) {

? ? ? ? UILayoutGuide *guide=self.scrollView.contentLayoutGuide;

? ? } else {

? ? }

@property(nonatomic,readonly,strong) UILayoutGuide *contentLayoutGuide API_AVAILABLE(ios(11.0),tvos(11.0));

8、整體布局信息

if (@available(iOS 11.0, *)) {

? ? ? ? UILayoutGuide *guide=self.scrollView.frameLayoutGuide;

? ? } else {

? ? }

@property(nonatomic,readonly,strong) UILayoutGuide *frameLayoutGuide API_AVAILABLE(ios(11.0),tvos(11.0));

9、設置UIScrollView的代理

scrollView.delegate=self;

@property(nullable,nonatomic,weak) id <UIScrollViewDelegate>delegate; //默認為nil. 弱引用

10、設置UIScrollView是否單方向運動

scrollView.directionalLockEnabled =YES;

@property(nonatomic,getter=isDirectionalLockEnabled) BOOL directionalLockEnabled; // 默認 NO

11、設置UIScrollView是否反彈

scrollView.bounces =NO;

@property(nonatomic) BOOL bounces; //默認的YES。如果是YES,從內容的邊緣反彈回來

12、設置控制垂直方向遇到邊框是否反彈

? ?scrollView.alwaysBounceVertical = NO;//控制垂直方向遇到邊框是否反彈@property(nonatomic) BOOL alwaysBounceVertical; //默認是NO。如果YES和bounces是YES,即使內容小于界限,允許垂直拖動。

13、設置控制水平遇到邊框是否反彈

? ? myScrollView.alwaysBounceHorizontal = NO;//控制水平遇到邊框是否反彈

@property(nonatomic) BOOL alwaysBounceHorizontal; // 默認是NO.如果YES和bounces是YES,即使內容小于界限,允許水平拖動。

14、設置是否翻頁

? ? myScrollView.pagingEnabled = NO; //是否翻頁

@property(nonatomic,getter=isPagingEnabled) BOOL pagingEnabled __TVOS_PROHIBITED;//默認是NO。如果是,請停在視圖邊界的倍數上。

15、設置控制控件是否能滾動

? ? myScrollView.scrollEnabled = YES;//控制控件是否能滾動

@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled; // 默認是YES。關閉任何拖拽。

16、設置垂直方向的滾動指示

? ? myScrollView.showsVerticalScrollIndicator =YES; //垂直方向的滾動指示

@property(nonatomic) BOOL showsVerticalScrollIndicator;//默認是YES

17、設置水平方向的滾動指示

?myScrollView.showsHorizontalScrollIndicator = NO;//水平方向的滾動指示

@property(nonatomic) BOOL showsVerticalScrollIndicator; //默認是YES

18、表示滾動指示器從封閉滾動視圖中被嵌入的距離

UIEdgeInsets e = UIEdgeInsetsMake(0, 0, keyboardBounds.size.height, 0);

[[self tableView] setScrollIndicatorInsets:e];

@property(nonatomic) UIEdgeInsets scrollIndicatorInsets; // 默認為UIEdgeInsetsZero.?

19、設置滾動控制器的風格

typedefNS_ENUM(NSInteger,?UIScrollViewIndicatorStyle)?{

????UIScrollViewIndicatorStyleDefault,?????//默認

????UIScrollViewIndicatorStyleBlack,???????//黑色風格

????UIScrollViewIndicatorStyleWhite????????//白色風格

};

scrollView .indicatorStyle=UIScrollViewIndicatorStyleDefault;

@property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle; // 默認是 UIScrollViewIndicatorStyleDefault

20、設置滑動速度

? scrollView .decelerationRate=3;//浮點數,規定用戶提起手指后的滾動減速速率

@property(nonatomic) CGFloat decelerationRate NS_AVAILABLE_IOS(3_0);//你的應用程序可以使用UIScrollViewDecelerationRateNormal和UIScrollViewDecelerationRateFast常量作為引用點以獲得一個合理的減速速率。

21、設置滾動視圖內容的偏移量,可以帶動畫效果

[scrollView setContentOffset:CGPointMake(_pageSize.width * self.page, 0) animated:NO];

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated; // animate at constant velocity to new offset//

contentOffset,

內容視圖原點的偏移點(以點的形式表示)。

animated,

若YES,用一個恒定的速度以動畫形式移動到新的偏移處;NO則立即移動

22、設置滾動視圖滾動到某個可見區域,可以帶動畫效果

[scrollView?scrollRectToVisible:CGRectMake(0,?0,?1,?1)?animated:YES];//scrollView滾動到頂部

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated; //rect,定義內容視圖區域的矩形。animated,若滾動應被動畫化則傳入YES,否則為NO。

該方法滾動內容視圖以使rect中定義的區域可以剛好顯示在滾動視圖中。若區域已經是可見的,該方法什么也不做。

23、顯示一個短暫的滾動指示器

[scrollView flashScrollIndicators];//建議在scrollView展示給用戶時調用一下,以提醒用戶該處可滑動

- (void)flashScrollIndicators; // displays the scroll indicators for a short time. This should be done whenever you bring the scroll view to front.

24、獲取用戶是否觸及視圖內容

BOOL isTracking=[scrollView isTracking];//只讀屬性

@property(nonatomic,readonly,getter=isTracking) BOOL tracking; //若用戶已觸摸內容視圖但可以還示開始拖動時該屬性值為YES。

25、表明用戶是否開始滾動內容

?BOOL dragging=[scrollView dragging];//只讀屬性

@property(nonatomic,readonly,getter=isDragging) BOOL dragging; //該屬性持有的值可能需要滾動一段時間或距離才會被設定成YES

26、獲取視圖是否開始減速(用戶停止拖動但視圖仍在滾動)

BOOL?decelerating=[scrollView?decelerating];//只讀屬性

@property(nonatomic,readonly,getter=isDecelerating)?BOOL?decelerating; //若用戶已不再拖拽內容但滾動還在發生時返回YES。

27、設置視圖是否延遲處理觸摸事件

BOOL?delaysContentTouches=[scrollView?delaysContentTouches];

@property(nonatomic)BOOL delaysContentTouches;?//規定滾動視圖是否延遲處理觸摸下壓手勢,若該屬性值為YES,滾動視圖會延遲處理下壓手勢直到可以確定該操作的意圖是否是滾動。若值為NO,滾動視圖會立即調用touchesShoudBegin:withEvent:inContentView:。默認值為YES。

28、設置控制觸摸內容視圖時是否總是導致跟蹤

_scrollView.canCancelContentTouches=YES;

@property(nonatomic) BOOL canCancelContentTouches;//控制觸摸內容視圖時是否總是導致跟蹤。若該屬性的值為YES,內容中的視圖會開始跟蹤觸摸的手指,若用戶拖拽手指到足以滾動的距離,視圖會收到touchesCancelled:withEvent:信息,而滾動視圖會作為一個滾動事件處理這次觸摸。若該屬性的值為NO,滾動視圖在內容視圖開始跟蹤時將無視手指移動,不進行滾動。默認值為YES。

29、在觸摸事件開始相應前調用

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view{

?????return YES;

}//?在UIScrollView的子類中重寫該方法,用于返回是否將事件傳遞給對應的子視圖,默認返回YES,如果返回NO,該事件不會傳遞給對應的子視圖

- (BOOL)touchesShouldBegin:(NSSet*)touches withEvent:(UIEvent*)event inContentView:(UIView*)view;//返回yes?-?將觸摸事件傳遞給相應的subView;?返回no?-?直接滾動scrollView,不傳遞觸摸事件到subView?

30、當設置canCancelContentTouches=YES時,觸摸事件響應前會調用該方法

-(BOOL)touchesShouldCancelInContentView:(UIView*)view{

if([view isKindOfClass:[UIButtonclass]]) {

returnYES;?

?}

return[super touchesShouldCancelInContentView:view];

}

- (BOOL)touchesShouldCancelInContentView:(UIView *)view;在UIScrollView的子類中重寫該方法,用于返回是否取消已經傳遞給子視圖的事件,默認當子視圖是UIControl時返回NO,否則返回YES(注: 該方法被調用的前提是canCancelContentTouches = YES)

參見:iOS實現ScrollView中子控件(Button,自定義View)的觸摸事件響應

四、UIScrollView的Zoom屬性

1-->設置 最小縮放比例

?scrollView.minimumZoomScale=0.5;

@property(nonatomic) CGFloat minimumZoomScale; // 默認是1.0

2-->設置?最大縮放比例

?scrollView.maximumZoomScale=1.5;//必須大于minimumZoomScale才能正常工作

@property(nonatomic) CGFloat maximumZoomScale; // 默認是1.0

3、設置縮放比例

scrollView.zoomScale =0.8;

@property(nonatomic) CGFloat zoomScale NS_AVAILABLE_IOS(3_0); // 默認是 1.0

4、指定當前縮放因子

[_scrollView setZoomScale:0.8 animated:YES];

- (void)setZoomScale:(CGFloat)scale animated:(BOOL)animated NS_AVAILABLE_IOS(3_0);

//scale

要縮放內容到的新值。

animated

若YES,動畫化縮放到時新的縮放大小,NO則立即縮放。

5、設置縮放顯示到某個區域,可以帶動畫效果

[_scrollView zoomToRect:newRect animated:YES];

- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated NS_AVAILABLE_IOS(3_0);//給定矩形的大小進行縮放

6、設置是否允許觸底反彈

scrollView.bouncesZoom=NO;

@property(nonatomic) BOOL bouncesZoom; //若該屬性的值為YES,在縮放超出最大值或最小值時,滾動視圖會臨時播放一個稍超出限制范圍的動畫再返回限制大小。若該屬性為NO,縮放會在達到限制大小時立即停止,默認為YES。

? 7、獲取是否正在縮放模式

BOOL zooming= _scrollView.zooming;

@property(nonatomic,readonly,getter=isZooming) BOOL zooming;//用戶發出了一個縮放手指,該值為YES,否則為NO

8、返回是否正在觸底反彈

?BOOL zoomBouncing= _scrollView.zoomBouncing;

@property(nonatomic,readonly,getter=isZoomBouncing) BOOL zoomBouncing;//滾動視圖縮放超出最大值或最小值時該值為YES;否則值為NO

?9、設置是否點擊狀態欄滾動到scrollView的最上端

?BOOL scrollsToTop= _scrollView.scrollsToTop;

@property(nonatomic) BOOL scrollsToTop __TVOS_PROHIBITED;// 是否允許點擊狀態欄讓距離狀態欄最近的scrollView滑動到頂部,默認為YES(注: 在iPhone中如果有多個將該屬性設置為YES的scrollView,則該方法無效;在iPad中則將距離狀態欄最近的scrollView滑動到頂部)

8、返回是否正在觸底反彈

BOOL?zoomBouncing= _scrollView.zoomBouncing;

@property(nonatomic,readonly,getter=isZoomBouncing) BOOL zoomBouncing;//滾動視圖縮放超出最大值或最小值時該值為YES;否則值為NO

五、UIScrollView的手勢屬性

1-->獲取當前用于滑動手勢的手勢識別器(只讀)

? UIPanGestureRecognizer *pan=[_scrollView panGestureRecognizer];

@property(nonatomic, readonly) UIPanGestureRecognizer *panGestureRecognizer NS_AVAILABLE_IOS(5_0);

2-->獲取當前用于擴張/收縮手勢的手勢識別器(只讀)

?UIPinchGestureRecognizer *pin=[_scrollView pinchGestureRecognizer];

@property(nullable, nonatomic, readonly) UIPinchGestureRecognizer *pinchGestureRecognizer NS_AVAILABLE_IOS(5_0);

3、設置鍵盤消失的模式

typedefNS_ENUM(NSInteger,?UIScrollViewKeyboardDismissMode)?{

????UIScrollViewKeyboardDismissModeNone,//不隱藏鍵盤

????UIScrollViewKeyboardDismissModeOnDrag,??????//手指滑動視圖鍵盤就會消失

????UIScrollViewKeyboardDismissModeInteractive,?//手指滑動視圖后可以與鍵盤交互,上下滑動鍵盤會跟隨手指上下移動

};

_scrollView.keyboardDismissMode=UIScrollViewKeyboardDismissModeNone;

@property(nonatomic) UIScrollViewKeyboardDismissMode keyboardDismissMode NS_AVAILABLE_IOS(7_0); // 默認是 UIScrollViewKeyboardDismissModeNone

4、設置刷新控件

//ios10新特性 自帶刷新控件

self.refresh = [[UIRefreshControl alloc]init];

self.refresh.tintColor = [UIColor blueColor];//控制菊花的顏色

NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"刷刷刷"];

self.refresh.attributedTitle = string;//菊花下面的文字,可利用NSAttributedString設置各種文字屬性

[self.refresh addTarget:self action:@selector(start1) forControlEvents:(UIControlEventValueChanged)];//刷新方法

ScrollView.refreshControl = self.refresh;

備注:

1.默認的高度和寬度?

2.原來只適用于UITableViewController

3.當拉動刷新時,UIRefreshControl將在UIControlEventValueChanged事件下被觸發

@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(10_0) __TVOS_PROHIBITED;

六、UIScrollView的UIScrollViewDelegate屬性

1-->視圖已經開始滑動時觸發的方法

#pragma mark - scrollView delegate-(void)scrollViewDidScroll:(UIScrollView*)scrollView{

if([scrollView isKindOfClass:[UITableViewclass]]) {

// NSLog(@"------是列表---");

}else{

// NSLog(@"------是滾動試圖----");

}

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;?

2-->視圖已經開始縮放時觸發的方法

-(void)scrollViewDidZoom:(UIScrollView*)scrollView{

CGFloat xcenter = scrollView.center.x, ycenter = scrollView.center.y;

}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);?

3、視圖開始拖動時觸發的方法

// 當開始滾動視圖時,執行該方法。一次有效滑動(開始滑動,滑動一小段距離,只要手指不松開,只算一次滑動),只執行一次。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{

? ? NSLog(@"scrollViewWillBeginDragging");

}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;//將要開始拖拽時調用(注: 該方法可能需要先滑動一段時間或距離才會被調用)

4、當用戶將要停止拖拽時調用

// 滑動scrollView,并且手指離開時執行。一次有效滑動,只執行一次。

// 當pagingEnabled屬性為YES時,不調用,該方法

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{

? ? NSLog(@"scrollViewWillEndDragging");

}

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);// 當用戶停止拖拽時調用(注: 應用程序可以通過修改targetContentOffset參數的值來調整內容視圖content view停止的位置)

5、視圖拖動結束時觸發的方法

// 滑動視圖,當手指離開屏幕那一霎那,調用該方法。一次有效滑動,只執行一次。

// decelerate,指代,當我們手指離開那一瞬后,視圖是否還將繼續向前滾動(一段距離),經過測試,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);

}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;// 當用戶停止拖拽時調用(注: 如果內容視圖content view在停止拖拽后繼續移動,則decelerate參數為YES)

6、視圖開始減速時觸發的方法

// 滑動減速時調用該方法。

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{

? ? NSLog(@"scrollViewWillBeginDecelerating");

? ? // 該方法在scrollViewDidEndDragging方法之后。

}

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;?

?7、視圖減速結束時觸發的方法

// 滾動視圖減速完成,滾動將停止時,調用該方法。一次有效滑動,只執行一次。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

? ? NSLog(@"scrollViewDidEndDecelerating");

? ? [_scrollView setContentOffset:CGPointMake(0, 500) animated:YES];

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;?

8、視圖動畫結束時觸發的方法,使用set方法設置偏移量后回觸發

// 當滾動視圖動畫完成后,調用該方法,如果沒有動畫,那么該方法將不被調用

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{

? ? NSLog(@"scrollViewDidEndScrollingAnimation");

? ? // 有效的動畫方法為:

? ? //? ? - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 方法

? ? //? ? - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 方法

}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;?

9、返回進行縮放的視圖

// 返回將要縮放的UIView對象。要執行多次

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{

? ? NSLog(@"viewForZoomingInScrollView");

? ? return? self.imgView;

}

- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;?

10、將要開始縮放時調用

// 當將要開始縮放時,執行該方法。一次有效縮放,就只執行一次。

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{

? ? NSLog(@"scrollViewWillBeginZooming");

}

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2);?

11、視圖內容結束縮放時觸發的方法

// 當縮放結束后,并且縮放大小回到minimumZoomScale與maximumZoomScale之間后(我們也許會超出縮放范圍),調用該方法。

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{

? ? NSLog(@"scrollViewDidEndZooming");

}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale;?

12、返回yes,開啟快捷滾動回頂端,將要滾動時調用

// 指示當用戶點擊狀態欄后,滾動視圖是否能夠滾動到頂部。需要設置滾動視圖的屬性:_scrollView.scrollsToTop=YES;

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{

? ? return YES;

}

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;

13、當scrollView已經滑動到頂部時調用(僅當點擊狀態欄讓scrollView滑動到頂部才調用)

// 當滾動視圖滾動到最頂端后,執行該方法

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{

? ? NSLog(@"scrollViewDidScrollToTop");

}

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;?

14、當滾動視圖的inset值發生變化時調用

- (void)scrollViewDidChangeAdjustedContentInset:(UIScrollView *)scrollView?{

? ? NSLog(@"scrollViewDidChangeAdjustedContentInset");

}

- (void)scrollViewDidChangeAdjustedContentInset:(UIScrollView *)scrollView API_AVAILABLE(ios(11.0), tvos(11.0));

Tip:判斷uiscrollview是向上滾動還是向下滾動

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{

? ? int currentPostion = scrollView.contentOffset.y;?

? ? if (currentPostion - _lastPosition > 25) {?

? ? ? ? _lastPosition = currentPostion;?

? ? ? ? NSLog(@"ScrollUp now");?

? ? }?

? ? else if (_lastPosition - currentPostion > 25)?

? ? {?

? ? ? ? _lastPosition = currentPostion;?

? ? ? ? NSLog(@"ScrollDown now");?

? ? }?

}

參考

iOS開發UIScrollView使用詳解

iOS控件詳解之UIScrollView

iOS 10 UIScrollView詳解(scrollview自帶刷新UIRefreshControl)

IOS-scrollView詳解

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374