scrollView实用技巧

-scrollView自动布局技巧
  • 步骤:

    • sb中拖scrollView
    • 设置scrollView上下左右为0
    • 拖一个UIView到scrollView中,并设置颜色(不是imageView)
    • 设置UIView的自动布局上下左右为0(此时报错)
    • 设置UIView和scrollView等宽等高
    • 更新frame,并运行

    • 设置宽高约束的乘积为2,并运行

    • 演示分页属性,并运行
    • 设置向上约束为100,并运行
    • 通过约束设置四个按钮到四个角
  • 小结:

    • scrollView的自动布局比较特殊
    • 通常添加一个容器视图 view
    • 设置四边对齐,constant 是对应的 contentInset 的值(不常用)
    • 设置view宽高,对应设置 scrollView的contentSize
-scrollView-代理方法
  • scrollViewDidScroll: 滚动视图滚动时使用
  • scrollViewDidEndDecelerating: 滚动视图停止滚动时使用
  • viewForZoomingInScrollView: 缩放视图时使用

  • 滚动相关方法
/// 滚动视图开始滚动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"%s", __FUNCTION__);
}
/// 将要减速 - 在释放开手之后调用
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    NSLog(@"%s", __FUNCTION__);
}

/// 完成减速 - 完全静止后调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    NSLog(@"%s", __FUNCTION__);
}
  • 缩放相关方法
/// 只要缩放就会调用
/// - 需要设置最小缩放比例(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__);
}
  • 拖拽相关方法
/// 将要开始拖拽
///
/// @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);}
  • 状态栏相关方法
/// 将要滚动到顶部,点击状态栏时调用
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {

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

/// 已经滚动到状态栏
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {

    NSLog(@"%s", __FUNCTION__);
}
  • 动画相关方法
/**
 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__);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值