UIScrollView判断滚动方向

UIScrollView继承自UIView,实现原理,给UIScrollView加一个拖拽手势,通过动态修改bounds实现UIView的滚动。

扩展

以我的理解来看,bounds以自己的右上角为参照点,从底层OpenGL 来看,应该对应本地坐标系(local coordinate),修改bounds应该底层应该是修改了模型矩阵(model matrix).想深入的可以试试...

实现原理

UIScrollView滚动时会修改对应的contentOffset属性,可以通过监听这个属性的变化,进行判断。

[self.tableView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:NULL];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
{
    if(object == self.tableView && [keyPath isEqualToString:@"contentOffset"]) {
        CGFloat oldOffsetY = [change[NSKeyValueChangeOldKey] CGPointValue].y;
        CGFloat newOffsetY = [change[NSKeyValueChangeNewKey] CGPointValue].y;
        CGFloat deltaY = newOffsetY - oldOffsetY;
        
        if(deltaY >= 0) {  //向上滚动
            _scrollUp =  YES;
        }else if(deltaY < 0){  //向下滚动
            _scrollUp = NO;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、简介 <<继承关系:UIScrollView --> UIView-->UIResponder-->NSObj...
    无邪8阅读 2,087评论 0 0
  • UIKit 继承关系图 UIView // 背景色.backgroundColor// 隐藏.hidden// 透...
    WesleyLien阅读 1,154评论 0 2
  • 废话不多说,直接上干货 ---------------------------------------------...
    小小赵纸农阅读 3,689评论 0 15
  • 一路走过来都是人生阅历,是人生一笔宝贵的财富,使自个愈加淡定、沉着。做好自个,做一个刚强的人,让心空一片光亮。咱们...
    shuyin35阅读 540评论 0 0
  • 看《我是歌手》第四季突围赛,苏运莹唱了一首五月天的经典老歌《知足》。这个长相普通却有着惊人创作才华的九零后女孩,自...
    一初心阅读 1,097评论 2 1

友情链接更多精彩内容