【发布时间】:2021-07-14 02:21:21
【问题描述】:
我继承了一个 UIKit 应用程序,我的前任在其中手动编写了所有界面代码。我有一个视图控制器,一个可以正常工作的简单登录屏幕,但是当我将它添加到 UINavigationController 时,它奇怪地被拉伸了。这对我来说没有多大意义。
我觉得我必须缺少一些简单的标志,或者我需要做些什么才能使 Navcontroller 与这个程序化自动布局(希望这是我最后一次)玩得很好
// this a view controller extension
func apply(constraints: [NSLayoutConstraint]) {
translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate(constraints)
}
有我方便的花花公子,看似理智的应用约束的实用程序。例如,让我的密码文本字段看起来不错的漂亮椭圆形小东西设置了这些约束。
// these constraints are being setup in the view controller
emailCapsuleView.apply(constraints: [
emailCapsuleView.topAnchor.constraint(equalTo: subBigTitle.bottomAnchor, constant: 24.0),
emailCapsuleView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
emailCapsuleView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.8),
emailCapsuleView.heightAnchor.constraint(equalToConstant: Dimensions.inputFieldHeight)
])
在 UINavigationController 之外一切都很好,
但在 UINavigationController 中,一切都超宽且损坏(模拟器拍摄)
这里的宽度不是问题 - 如果我使用一个常数作为宽度,我的子视图仍然偏离中心,尽管它的 centerX 设置为视图控制器的视图的中心 X。
【问题讨论】:
-
您是否收到任何有关约束冲突的警告?
view是什么?它在导航控制器中报告的宽度是多少? -
view 是视图控制器的视图。即使宽度是恒定的也没关系。你可以看到一切是如何偏离中心的。
-
嗯,胶囊的宽度与视图的宽度成正比。在我看来,胶囊的布局“正确”,视野比您想要的要宽,
-
是的,很明显,与导航控制器中包含的视图控制器通信的宽度是错误的。此外,即使我使用恒定宽度,它仍然偏离中心。
-
您能否显示以下代码:导航控制器本身以及它的根如何添加到视图中,它可能位于的任何容器视图控制器,以及这个有问题的视图控制器。当然只是相关部分。
标签: ios swift autolayout uikit