tableview联合滚动的坑

需求是可以上下、左右滑动的效果,我的方案是tableview+(tableview+scrollview),很简单,如图


嵌套简图.png

蓝色为手机屏幕,黄色为左侧固定展示的tableview,橙色为scrollview嵌套tableview,实现上下、左右滑动。通过scrollViewDidScroll绑定两个tableview的滚动, - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated实现急停效果,联合运用trackingdraggingdecelerating等属性实现体验优化,不作赘述。使用tableFooterView属性构建tableview的脚视图,实现点击加载更多,左侧tableview的脚视图设置为屏宽,tableview.tableFooterView.clipsToBounds = NO可实现脚视图超越父视图进行展示(或将左侧tableview的宽度设为屏宽)。右侧横滑tableview的脚视图设置为其自身tableview宽度,颜色透明,点击事件和右侧tableview执行统一方法,统一reload。

然而,坑来了,reload之后向下拖动的时候视图会出现抖动,二者偏移量会持续出现差值(16),即使设置统一的contentOffset也无效。

解决办法:


    if(@available(iOS11.0, *)) {

        [UITableView appearance].estimatedRowHeight = 0;

        [UITableView appearance].estimatedSectionFooterHeight = 0;

        [UITableView appearance].estimatedSectionHeaderHeight = 0;

        [UITableView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

        [UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

    }

放到didFinishLaunchingWithOptions,OK!
有关tableview出现的任何毫无缘由的bug,尝试适配一下iOS11很可能会有惊喜,比如我。。。

你可能感兴趣的:(tableview联合滚动的坑)