问题标签 [layoutmargins]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
23 浏览

swift - 左对齐子视图到 UINavigationBar 大标题

我有一个 UIViewController 作为 UINavigationController 的根,我设置了大标题的首选项,如下所示navigationController?.navigationBar.prefersLargeTitles = true

我的目标是将视图的左侧与导航标题的左侧对齐,但我想动态而不是通过硬编码值来实现。这是所需的最终结果:

UINavigationBar 对齐

我尝试使用检索导航栏标题的左侧或 x 位置

let navigationLeftX = navigationController!.navigationBar.layoutMargins.left

我还打印了这个值并得到了值8.0

所以我想,我应该把它设置为创建的视图的 x 位置,它应该对齐,我的代码在viewWillAppear

结果很接近,但仍然很差。

UINavigationController UINavigationBar 与子视图对齐

如果我将边距 x 值加倍,它似乎正确对齐

UINavigationBar 对齐 Swift

所以我正要得出结论,除了 8 点的左边距之外,还有一个额外的 8 点填充,逻辑上认为,如果我将导航的左边距设置为 0,我应该会看到 8 点的填充,所以我做了:

但令我惊讶的是,它实际上位于屏幕的左边缘,没有任何填充:

UINavigationBar 标题填充边距对齐

任何人都可以解释这种行为并分享动态对齐视图与导航栏标题的最佳方式吗?

提前致谢