您的位置:首页 > 产品设计 > UI/UE

UIScrollView的代理方法

2017-03-16 01:06 225 查看

UIScrollView 代理介绍

常用代理方法

scrollViewDidScroll:
滚动视图滚动时使用
scrollViewDidEndDecelerating:
滚动视图停止滚动时使用
viewForZoomingInScrollView:
缩放视图时使用

协议方法

滚动相关方法

/// 滚动视图开始滚动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}

/// 将要减速 - 在释放开手之后调用
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}

/// 完成减速 - 完全静止后调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}

缩放相关方法

#pragma mark - 缩放相关代理方法
/// 只要缩放就会调用
/// - 需要设置最小缩放比例(minimumZoomScale)和最大缩放比例(maximumZoomScale)
///
/// - 需要实现 `viewForZoomingInScrollView` 方法 告诉 scrollView 缩放的视图
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}

/// 告诉滚动视图缩放的视图
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return _imageView;
}

/// 缩放开始时调用
///
/// @param scrollView 滚动视图
/// @param view       缩放的视图
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view {

NSLog(@"%s", __FUNCTION__);
}

/// 缩放结束后调用
///
/// @param scrollView 滚动视图
/// @param view       缩放的视图
/// @param scale      缩放的比例
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale {

NSLog(@"%s", __FUNCTION__);
}

拖拽相关方法

#pragma mark - 拖拽相关代理方法 - 与缩放方法不能共存
/// 将要开始拖拽
///
/// @param scrollView 滚动视图
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}

/// 将要结束拖拽
///
/// @param scrollView          滚动视图
/// @param velocity            速度
/// @param targetContentOffset 目标偏移位置
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
NSLog(@"%s", __FUNCTION__);
}

/// 完成拖拽方法,手指放开后调用
///
/// @param scrollView 滚动视图
/// @param decelerate 是否减速
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
NSLog(@"%s %d", __FUNCTION__, decelerate);
}

状态栏相关方法

#pragma mark - 状态栏相关方法
/// 将要滚动到顶部,点击状态栏时调用
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
return YES;
}

/// 已经滚动到状态栏
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}

动画相关方法

#pragma mark - 动画相关方法
/**
The scroll view calls this method at the end of its implementations of the setContentOffset:animated: and scrollRectToVisible:animated: methods, but only if animations are requested.

滚动视图会在实现了 setContentOffset:animated: & scrollRectToVisible:animated: 方法之后
调用此方法

同时必须在上述两个方法中允许动画
*/
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
NSLog(@"%s", __FUNCTION__);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: