UIScrollViewDelegate的代理函数说明

本文记录了在开发LemonKit4Android时,仿照iOS的UIScrollView创建LKScrollView并实现Delegate的过程。详细解释了每个代理方法的功能,包括内容偏移改变、缩放、滑动开始和结束等关键回调。同时提到了与iOS的差异,如pagingEnabled属性为YES时不调用某些方法。最后介绍了LemonKit移动端全平台开发框架。
摘要由CSDN通过智能技术生成

今天在开发LemonKit4Android的时候完全仿照iOS的UIScrollView写了一个Android的版本,名叫LKScrollView(详见LemonKit4Android: https://github.com/1em0nsOft/LemonKit4Android),同时也完全写了一套Delegate,写的同时对iOS的UIScrollViewDelegate中所有的函数功能过了一遍,特此记录一下。

  • 只要ScrollView的内容偏移被改变,就会被回调
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;  
  • 只要ScrollView在被缩放的时候就会被回调(iOS>=3.2时候可用)
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2); 
  • 手指触摸ScrollView将要滑动时候被回调
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
  • 手指即将停止触摸的时候被回调(iOS>=5时候可用)
  • 当pagingEnabled属性为YES时,不调用,该方法
  • @param velocity 当前scrollView滚动的速度
  • @param targetContentOffset 照此速度移动的话的最终点
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
  • 当手指离开ScrollView时回调该方法
  • @param decelerate 手指离开后,视图是否还将继续向前滚动,即如果继续滚动,那么decelerate=YES
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
  • 当手指离开ScrollView,滚动开始减速的时候调用
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView; 
  • 当手指离开ScrollView,滚动减速到停止后调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; 
  • 当ScrollView执行完动画之后被调用,通常指的是执行下面两个函数后被调用
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; 
  • 设置要缩放的 ScrollView 上面的哪一个子视图 , 只能是子视图 , 不能是ScrollView 本身
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
  • 当开始缩放的时候被回调(iOS>=3.2时候可用)
  • @param view 缩放的子视图
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2); 
  • 当已经缩放的时候回调该方法,缩放在预设最小值和最大值中间的时候才可用(在回弹动画之后被调用)
  • @param view 缩放的子视图
  • @param scale 缩放的比例
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; 
  • 当要滚到视图顶部的时候回调此函数询问用户是否能回到顶部,该方法当设置scrollView.scrollsToTop=YES的时候才会回调
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
  • 当已经滚动到顶部之后回调的函数(动画执行完毕)
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;

如果哪路大神觉得有问题还请指教,因为以上内容也只是我根据平时的经验和理解总结的


LemonKit移动端全平台极速开发框架开源地址如下:

版本名称Github地址
Android版本https://github.com/1em0nsOft/LemonKit4Android
iOS ObjC版本https://github.com/1em0nsOft/LemonKit4iOS
iOS Swift版本https://github.com/1em0nsOft/LemonKit4iOS-Swift
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值