目前,在iPad上,我的UINavigationBar大标题看起来很奇怪,因为它不缩进我的UITableView单元格所在的位置。这是因为我的表视图和单元格遵循可读的宽度。是否有一种缩进此标题的方法,或者是使单元格与标题对齐的唯一建议(使它们不跟随可读的宽度)。我真的很感激任何花时间回应的人。
发布于 2020-02-05 22:32:12
第一次加载视图控制器时,应该检索当前readableContentGuide的readableContentGuide坐标,并将该值设置为左layoutMargin值。因此:
let leftMargin = self.view.readableContentGuide.layoutFrame.minX
self.navigationController?.navigationBar.layoutMargins.left = leftMargin然后,您还需要确保布局动态调整,以便如果用户旋转屏幕(或在iPad上使用可变窗口大小),标题将保持对齐:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
coordinator.animate(alongsideTransition: { _ in
let leftMargin = view.readableContentGuide.layoutFrame.minX
navigationController?.navigationBar.layoutMargins.left = leftMargin
}, completion: nil)
}发布于 2020-11-29 22:44:03
“swillsea”的回答对我来说是不正确的:在设备旋转时,大标题的左边框在旋转动画中似乎有一个错误的初始位置。在模拟器中可以看到这一点,并启用了慢动画选项。
原因是屏幕是用旧的左边框布置在新的尺寸中的。在旋转动画期间,边距被动画化成正确的最终大小。
当大小发生变化时,我不会更新左边距,而只是作为常规布局链的一部分进行更新:
override func viewWillLayoutSubviews() {
let leftMargin = self.view.readableContentGuide.layoutFrame.minX
self.navigationController?.navigationBar.layoutMargins.left = leftMargin
}对我来说,现在的效果是,在旋转动画的所有阶段,标题的左边边距等于我可读的内容。
https://stackoverflow.com/questions/56628436
复制相似问题