UIScrollView的代理方法

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__);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值