首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种Swift方法可以将导航条的大标题缩进与cellLayoutMarginsFollowReadableWidth一致?

是否有一种Swift方法可以将导航条的大标题缩进与cellLayoutMarginsFollowReadableWidth一致?
EN

Stack Overflow用户
提问于 2019-06-17 09:26:03
回答 2查看 710关注 0票数 3

目前,在iPad上,我的UINavigationBar大标题看起来很奇怪,因为它不缩进我的UITableView单元格所在的位置。这是因为我的表视图和单元格遵循可读的宽度。是否有一种缩进此标题的方法,或者是使单元格与标题对齐的唯一建议(使它们不跟随可读的宽度)。我真的很感激任何花时间回应的人。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-05 22:32:12

第一次加载视图控制器时,应该检索当前readableContentGuidereadableContentGuide坐标,并将该值设置为左layoutMargin值。因此:

代码语言:javascript
复制
let leftMargin = self.view.readableContentGuide.layoutFrame.minX    
self.navigationController?.navigationBar.layoutMargins.left = leftMargin

然后,您还需要确保布局动态调整,以便如果用户旋转屏幕(或在iPad上使用可变窗口大小),标题将保持对齐:

代码语言:javascript
复制
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)
}
票数 2
EN

Stack Overflow用户

发布于 2020-11-29 22:44:03

“swillsea”的回答对我来说是不正确的:在设备旋转时,大标题的左边框在旋转动画中似乎有一个错误的初始位置。在模拟器中可以看到这一点,并启用了慢动画选项。

原因是屏幕是用旧的左边框布置在新的尺寸中的。在旋转动画期间,边距被动画化成正确的最终大小。

当大小发生变化时,我不会更新左边距,而只是作为常规布局链的一部分进行更新:

代码语言:javascript
复制
override func viewWillLayoutSubviews() {
    let leftMargin = self.view.readableContentGuide.layoutFrame.minX
    self.navigationController?.navigationBar.layoutMargins.left = leftMargin
}

对我来说,现在的效果是,在旋转动画的所有阶段,标题的左边边距等于我可读的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56628436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档