[iOS] UITableView(UIScrollView)向上或向下偏移(64px)

原理:

如果某个 UIViewController 的 self.view 的第一个子视图是 UIScrollView 类型的话, 这个 UIViewController 被 push 到 UINavigationController 中 或者 initWithRootController 成为UINavigationController 控制的 Controller 时,
这个UIViewController 的 view 的子视图UIScrollView中的所有子视图, 都将会下移64px (状态栏20px + 导航栏44px)

出现问题

  • 当 self.view 和 tableview 之间还有个 view 就会造成内容向上偏移 64px
    解决方法 :
    1. topLayoutGuide: topLayoutGuide属性表示不希望被透明的状态栏或导航栏遮挡的内容范围的最高位置。这个值可能由当前的 VC 或这个 VC 所属的NavigationController或TabBarController决定
          v.snp.makeConstraints { (make) in
              make.top.equalTo(self.topLayoutGuide.snp.bottom)
              make.leading.trailing.bottom.equalTo(view)
          }
    
    1. 导航栏的透明度: 如果导航栏不透明,那么位于UINavigationController的栈中的UIViewController的view的frame将会更新为(0, 64, ScreenWidth, ScreenHeight-64)
    self.navigationController?.navigationBar.isTranslucent = false
    

参考链接1
参考链接2(Objc 中国)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容