iOS返回原页面scrollView误差

第一个页面blog

使用presentViewController方法进入一个横屏页面
返回第一个页面以后顶部就成这样了,一松手就变成这样io

打印先后,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
}
}scroll

相关文章
相关标签/搜索