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

相關文章
相關標籤/搜索