当前位置: 首页 > news >正文

「Swift」取消UITableView起始位置在状态栏下方开始

前言:在写页面UI时发现,当隐藏了NavigationBar时,即使UITableView是从(0,0)进行布局,也会一直在手机状态栏下方进行展示布局,而我的想法是希望UITableView可以从状态栏处就进行展示布局
当前页面展示:

在这里插入图片描述

问题查找和排查:

通过进行修改tableHeaderView的坐标,发现无论如何将headerView的坐标往上移动都没有任何效果,仍在状态栏下展示。所以感觉得出这是一个系统的自动布局,通过查询资料,查到automaticallyAdjustsScrollViewInsets属性

automaticallyAdjustsScrollViewInsets属性:

涉及到automaticallyAdjustsScrollViewInsets属性,但实际上,从iOS 11开始,该属性已经被废弃,并被contentInsetAdjustmentBehavior属性替代。
在iOS 11之前,automaticallyAdjustsScrollViewInsets用于控制UIViewController是否应该自动调整与滚动视图(如UITableView)相关的内边距以考虑导航栏、标签栏等。当设置为true时,系统会自动为你调整滚动视图的内边距,确保内容不会被这些视图遮挡。而在iOS 11及以上,这一概念得到了更新。
在iOS 11及以上,你应该使用contentInsetAdjustmentBehavior属性来控制滚动视图的内边距调整行为。设置为.never表示不要自动调整内边距,从而防止系统在隐藏导航栏时向下调整内容。这样,你可以更精确地控制滚动视图的布局。
总的来说,通过使用contentInsetAdjustmentBehavior,你可以在iOS 11及以上版本上更好地控制滚动视图的内边距,以适应你的布局需求。

问题解决思路和办法:

所以根据上方属性特征,可以得出就是因为这个属性而导致系统自动调整UITableView与状态栏之前的距离

解决问题:
myTableView = UITableView(frame: .zero, style: .grouped)
myTableView.tableHeaderView = tableHeaderView
myTableView.showsVerticalScrollIndicator = false
myTableView.separatorStyle = .none
myTableView.delegate = self
myTableView.dataSource = selfif #available(iOS 11.0, *) {myTableView.contentInsetAdjustmentBehavior = .never
} else {automaticallyAdjustsScrollViewInsets = false
}myTableView.register(goodsCell.self, forCellReuseIdentifier: NSStringFromClass(goodsCell.self))

在初始化myTableView后,进行将automaticallyAdjustsScrollViewInsets属性进行关闭,以适应自己的布局需求。

解决后页面展示:

在这里插入图片描述

图片借鉴地址

希望文章对大家能够有所帮助,大家可以多多点赞和关注,以便后续学习不迷路~

相关文章:

  • 10、外观模式(Facade Pattern,不常用)
  • Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
  • 网站提示不安全?
  • vue.js el-table 动态单元格列合并
  • 【改进YOLOv8】融合高效网络架构 CloAtt的焊缝识别系统
  • Linux下Redis安装及配置
  • 好用免费的AI换脸5个工具
  • form表单的数据校验可以自定义规则,定义验证器(validator)
  • 【USRP】5G / 6G 原型系统 5g / 6G prototype system
  • Large Language Models areVisual Reasoning Coordinators
  • CSS新手入门笔记整理:CSS列表样式
  • 如何判断数据库慢 SQL 查询?
  • Windows+WSL开发环境下微服务注册(Consul)指定IP
  • ros来保存图像和保存记录视频的方法---gmsl相机保存视频和图片
  • linux学习之详解文件
  • @jsonView过滤属性
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • IP路由与转发
  • Java多态
  • jquery cookie
  • k8s如何管理Pod
  • maven工程打包jar以及java jar命令的classpath使用
  • React as a UI Runtime(五、列表)
  • Redis 中的布隆过滤器
  • yii2权限控制rbac之rule详细讲解
  • 百度地图API标注+时间轴组件
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 基于HAProxy的高性能缓存服务器nuster
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端知识点整理(待续)
  • 使用 QuickBI 搭建酷炫可视化分析
  • 消息队列系列二(IOT中消息队列的应用)
  • Nginx实现动静分离
  • #QT(串口助手-界面)
  • $.ajax中的eval及dataType
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (蓝桥杯每日一题)love
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • ?php echo ?,?php echo Hello world!;?
  • @Import注解详解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ NOI 2001 ] 食物链
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [HCTF 2018]WarmUp (代码审计)