第一个页面
进入一个横屏页面
返回之后顶部就成这样了,一松手就变成这样
打印前后,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
}
}
相关文章
- 08-25iOS 接入Flutter禁用右滑返回关闭页面
- 08-25Ios中微信页面返回上一页去除缓存几种常见思路
- 08-25全局设置页面颜色 返回按钮样式 iOS
- 08-25简单解决ios返回时页面不刷新的几种方法(h5页面返回h5页面)
- 08-25iOS实现微信外部H5支付完成后返回原APP(多APP也可实现)
- 08-25IOS微信禁用分享跳转页面返回BUG修复
- 08-25IOS微信中看文章跳转页面后点击返回无效
- 08-25图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现
- 08-25IOS设置导航栏返回按钮,并添加事件返回主页面
- 08-25微信支付返回:当前页面的的URL未注册;安卓手机调起支付成功,ios系统调起支付失败)