zoukankan      html  css  js  c++  java
  • iOS返回原页面scrollView偏差

    第一个页面

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

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

  • 相关阅读:
    VC++读写文件
    VC++编译说明
    VC++时间函数总结
    VC++多工程项目
    VC++全局变量初始化
    Linux 系统免密码登陆远程服务器
    debian 系统安装配置apache
    数据库授权
    Mysql 主从服务器数据同步
    centos Install Docker
  • 原文地址:https://www.cnblogs.com/xiao-xiao-/p/11076660.html
Copyright © 2011-2022 走看看