现在网站前台用什么做,陕西省交通建设公司网站,保定商库网络推广,致远oa协同管理系统前言#xff1a;在写页面UI时发现#xff0c;当隐藏了NavigationBar时#xff0c;即使UITableView是从(0,0)进行布局#xff0c;也会一直在手机状态栏下方进行展示布局#xff0c;而我的想法是希望UITableView可以从状态栏处就进行展示布局
当前页面展示#xff1a; 问题…前言在写页面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属性进行关闭以适应自己的布局需求。
解决后页面展示 图片借鉴地址
希望文章对大家能够有所帮助大家可以多多点赞和关注以便后续学习不迷路~