需求是可以上下、左右滑动的效果,我的方案是tableview+(tableview+scrollview),很简单,如图
蓝色为手机屏幕,黄色为左侧固定展示的tableview,橙色为scrollview嵌套tableview,实现上下、左右滑动。通过scrollViewDidScroll
绑定两个tableview的滚动, - (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
实现急停效果,联合运用tracking
、dragging
、decelerating
等属性实现体验优化,不作赘述。使用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很可能会有惊喜,比如我。。。