iOS返回原页面scrollView偏差

第一个页面iOS返回原页面scrollView偏差
进入一个横屏页面iOS返回原页面scrollView偏差
返回之后顶部就成这样了,一松手就变成这样iOS返回原页面scrollView偏差
打印前后,frame 、contentOffset、contentSize、contentInset的值都挺正常的,只有adjustedContentInset的值,首次进入页面的时候是{64, 0, 0, 0},从横屏页面回来之后,就变成了{32, 0, 0, 0}。
尝试了在scrollViewDidEndDecelerating直接修改contentOffset,但是效果不好看,单纯修改scrollView的contentInsetAdjustmentBehavior和self.view的automaticallyAdjustsScrollViewContentInset以及当前导航控制器的的automaticallyAdjustsScrollViewInsets均无用。
无法找到原因,最后解决方案为:由于从第二个页面返回之后,必须调用viewDidAppear,因此在这个方法中增加修改contentInset的代码,强制修改内边距
代码如下:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
if (@available(iOS 11.0, *)) {
if ([NSStringFromUIEdgeInsets(self.scrollView.adjustedContentInset ) isEqualToString:NSStringFromUIEdgeInsets(UIEdgeInsetsMake(32, 0, 0, 0))] ) {
self.scrollView.contentInset = UIEdgeInsetsMake(32, 0, 0, 0 );
}
} else {
// Fallback on earlier versions
}
}

iOS返回原页面scrollView偏差

上一篇:【朝花夕拾】Android自定义View篇之(七)Android事件分发机制(下)滑动冲突解决方案总结


下一篇:移动平均法 and 指数平滑法