contentOffset、contentInset、bounds的简介

    做iOS项目必然会使用到UIScrollView,当然我是把其子类UITableView和UICollectionView都当做UIScrollView来看待来处理其scrollViewDidScroll代理事件;

    讲究体验的项目页面大概会将导航做成显隐动态展示,这种处理小编是在scrollViewDidScroll中,监控contentOffset.y的值,根据UED的动效设计,在固定的位置,将导航显示出来。但显示导航时,避免表格上cell展示有问题,有些会改变表格的y轴坐标,重新布局frame;有些使用contentInset,调整展示区域的大小。其中contentInset是当前表格能够展示的区域的偏移项,其四个值按照上左下右来限制。

    大部分项目中有表格展示的页面,几乎都有置顶功能,这里使用了contentOffset,并设置动画,效果美观简单;小编做的项目中有个页面是在表格中的cell里面放了几个并排的网格,考虑到左右滑动会出现卡顿的体验问题,cell里面的网格本身没有做重用,有多少分类就创建多少网格。然而进行上下滑动时,就需要解决手势透传问题,和滑动子视图网格,父视图表格固定位置。手势透传小编直接在父视图表格里面实现了shouldRecognizeSimultaneouslyWithGestureRecognizer代理,监控是否有子视图手势滑动,并设置其值;

    在scrollViewDidScroll方法中通过设置contentOffset,来固定父视图表格的展示位置,但这里会出现个循环调用的问题,UIScrollView本身或子视图,设置contentOffset时,会调用scrollViewDidScroll代理方法,所以在scrollViewDidScroll方法中要设置很严谨的判断使父视图表格尽量少设置contentOffset。小编百度后发现使用bounds也能实现这个功能,这两者的区别:contentOffset是让子视图偏移展示,bounds是父视图本身偏移到固定位置展示。

你可能感兴趣的:(contentOffset、contentInset、bounds的简介)