Xcode - 宽度和水平位置不明确

时间:2015-07-02 00:11:59

标签: ios xcode swift position

我试图弄清楚自动布局是如何工作的,我遇到了一个问题,我不明白为什么我会收到警告“#34;宽度和水平位置都不明确&#34 ;一个观点。视图是底部的细蓝线,您可以在我正在处理的ViewController的屏幕截图中看到:

viewController

箭头和主页按钮没有任何约束。较大灰色视图的约束如下:

gray view constraints

"作者"的限制标签如下:

Authors label constraints

蓝色薄视图的约束如下:

blue thin view constraints

我不明白为什么我会收到这个警告,因为较大的灰色视图没有得到警告,但我对待这两个视图的方式似乎没有任何区别。我确保对它们的前导和尾随空间都包含约束,那么为什么水平位置对于稀薄的蓝色不明确?我可以理解为什么宽度可能是模棱两可的但我不明白为什么它对于更大的灰色视图不会有歧义。不应该自动布局自动处理吗?我希望宽度明显与屏幕尺寸一致。

2 个答案:

答案 0 :(得分:1)

  

最好不要将这样的视图放在顶部栏中,如果你只是为了分区而在greybar下面最好。但我已经解决了你的方式。

蓝色条:

  1. 你给“底部空间:”,它没有必要,因为它由“高度等于:2”维护
  2. 你正在给“领先的空间”和“与x对齐”这些也没有意义。
  3. 解决方案:

    只需这样做 - >

    1. 将“领先空间:superview(greyview)”和“Trailing space to:superview(greyview)”赋值0
    2. 给“顶级空间:(作者)”某个值
    3. 最后“身高等于:2”或者你想要的。
    4. enter image description here

      greyView的约束

      enter image description here

      标签限制

      enter image description here

      蓝条的限制

      enter image description here

答案 1 :(得分:0)

从蓝色细视图中删除对齐中心X约束。

旁注:看起来您正在尝试创建标准导航栏。如果是这样,有更好的方法:

选择您想要的控制器作为导航流的根目录(可能是您的“主页”控制器)。然后转到编辑器>嵌入>导航控制器。这会将您的视图控制器放在导航控制器中。然后,您可以将Show segue连接到您的作者控制器,它将自动有一个导航栏。在运行时,Home的后退箭头将自动出现。

修改

假设您有主页和作者查看控制器。

  1. 将作者视图控制器嵌入导航控制器中。
  2. 从Home视图控制器上的按钮创建一个显示segue到包含Authors视图控制器的导航控制器。
  3. 在您的作者视图控制器viewDidLoad中,添加一个主页按钮以关闭作者视图控制器,如下所示:

    self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(title: "Home", style: UIBarButtonItemStyle.Bordered, target: self, action: "goHome"), animated: true)
    
  4. 添加一个功能,在点按“主页”按钮时关闭您的作者视图控制器:

    func goHome() {
        self.navigationController!.dismissViewControllerAnimated(true, completion: nil)
    }
    
  5. 您需要多做一点才能获得主页按钮上的箭头图标。 This post提供了一些如何做到这一点的想法。如果你已有图像,那应该很容易。

    现在,您的作者视图控制器位于真实的导航控制器中,您可以从其导航到其他视图控制器,例如,如果用户点击作者以获取更多信息。