Xcode - 宽度和水平位置不明确
Xcode - Width and Horizontal Position Are Ambiguous
我试图弄清楚自动版式是如何工作的,但我 运行 遇到了一个问题,我不明白为什么我会收到 "The width and horizontal position are ambiguous" 的视图警告。正如您在我正在处理的 ViewController 的屏幕截图中看到的那样,该视图是底部的细蓝线:
箭头和主页按钮没有任何限制。较大灰度视图的约束条件如下:
"Authors"标签的约束条件如下:
而blue thin view的约束条件如下:
我不明白为什么我会收到此警告,因为较大的灰色视图未收到警告,但我处理这两个视图的方式似乎没有任何区别。我确保包括对前导和尾随 space 的约束,那么为什么细蓝色的水平位置不明确?我可以看出为什么宽度可能不明确,但我不明白为什么对于较大的灰色视图它不会模糊。 autolayout 不应该自动处理吗?我希望宽度明显随屏幕尺寸缩放。
Its better not to put such view inside the top bar, just below the greybar would be best for it if your are doing it just for partition. But I have resolved for your way Here.
对于蓝色条:
- 您正在提供 "bottom space to:",它不是必需的,因为它由 "height equals:2"
维护
- 你给 "leading space to" 和 "Align to x" 那也没有意义。
解决方案:
就这样做->
- 给 "leading space to: superview(greyview)" 和 "Trailing space to: superview(greyview)" 两个值 0
- 给"top space to:(authors)"一定的价值
- 最后 "Height Equals to: 2" 或者如你所愿。
greyView 的约束条件
标签约束
蓝条的约束条件
从蓝色薄视图中删除对齐中心 X 约束。
旁注:您似乎正在尝试创建标准导航栏。如果是这样,有一个更好的方法来做到这一点:
Select 您希望作为导航流根的控制器(也许是您的 "Home" 控制器)。然后转到编辑器 > 嵌入 > 导航控制器。这会将您的视图控制器放在导航控制器中。然后,您可以将 Show segue 连接到您的 Authors 控制器,它会自动拥有一个导航栏。运行时返回主页的箭头会自动出现。
编辑:
假设您有 Home 和 Authors 视图控制器。
- 将 Authors 视图控制器嵌入到导航控制器中。
- 创建从主页视图控制器上的按钮到包含作者视图控制器的导航控制器的显示转场。
在您的 Authors 视图控制器中 viewDidLoad
,添加一个主页按钮以关闭 Authors 视图控制器,如下所示:
self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(title: "Home", style: UIBarButtonItemStyle.Bordered, target: self, action: "goHome"), animated: true)
添加一个功能以在点击主页按钮时关闭 Authors 视图控制器:
func goHome() {
self.navigationController!.dismissViewControllerAnimated(true, completion: nil)
}
您需要做一些额外的工作才能在主页按钮上显示箭头图标。 This post 给出了一些如何做到这一点的想法。如果您已经有了图像,那应该很容易。
现在您的作者视图控制器在一个真正的导航控制器中,您可以从它导航到其他视图控制器,比如说如果用户点击作者以获取更多信息。
我试图弄清楚自动版式是如何工作的,但我 运行 遇到了一个问题,我不明白为什么我会收到 "The width and horizontal position are ambiguous" 的视图警告。正如您在我正在处理的 ViewController 的屏幕截图中看到的那样,该视图是底部的细蓝线:
箭头和主页按钮没有任何限制。较大灰度视图的约束条件如下:
"Authors"标签的约束条件如下:
而blue thin view的约束条件如下:
我不明白为什么我会收到此警告,因为较大的灰色视图未收到警告,但我处理这两个视图的方式似乎没有任何区别。我确保包括对前导和尾随 space 的约束,那么为什么细蓝色的水平位置不明确?我可以看出为什么宽度可能不明确,但我不明白为什么对于较大的灰色视图它不会模糊。 autolayout 不应该自动处理吗?我希望宽度明显随屏幕尺寸缩放。
Its better not to put such view inside the top bar, just below the greybar would be best for it if your are doing it just for partition. But I have resolved for your way Here.
对于蓝色条:
- 您正在提供 "bottom space to:",它不是必需的,因为它由 "height equals:2" 维护
- 你给 "leading space to" 和 "Align to x" 那也没有意义。
解决方案:
就这样做->
- 给 "leading space to: superview(greyview)" 和 "Trailing space to: superview(greyview)" 两个值 0
- 给"top space to:(authors)"一定的价值
- 最后 "Height Equals to: 2" 或者如你所愿。
greyView 的约束条件
标签约束
蓝条的约束条件
从蓝色薄视图中删除对齐中心 X 约束。
旁注:您似乎正在尝试创建标准导航栏。如果是这样,有一个更好的方法来做到这一点:
Select 您希望作为导航流根的控制器(也许是您的 "Home" 控制器)。然后转到编辑器 > 嵌入 > 导航控制器。这会将您的视图控制器放在导航控制器中。然后,您可以将 Show segue 连接到您的 Authors 控制器,它会自动拥有一个导航栏。运行时返回主页的箭头会自动出现。
编辑:
假设您有 Home 和 Authors 视图控制器。
- 将 Authors 视图控制器嵌入到导航控制器中。
- 创建从主页视图控制器上的按钮到包含作者视图控制器的导航控制器的显示转场。
在您的 Authors 视图控制器中
viewDidLoad
,添加一个主页按钮以关闭 Authors 视图控制器,如下所示:self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(title: "Home", style: UIBarButtonItemStyle.Bordered, target: self, action: "goHome"), animated: true)
添加一个功能以在点击主页按钮时关闭 Authors 视图控制器:
func goHome() { self.navigationController!.dismissViewControllerAnimated(true, completion: nil) }
您需要做一些额外的工作才能在主页按钮上显示箭头图标。 This post 给出了一些如何做到这一点的想法。如果您已经有了图像,那应该很容易。
现在您的作者视图控制器在一个真正的导航控制器中,您可以从它导航到其他视图控制器,比如说如果用户点击作者以获取更多信息。