iOS堆栈视图约束问题

iOS堆栈视图约束问题,ios,swift,Ios,Swift,我试图创建一个模式视图来显示一些信息。此模式视图还将覆盖整个视图,以防止与基础视图交互。自定义控件中的“我的视图”层次结构如下所示: 自视图(100%面积) 覆盖窗口(100%面积) 堆栈视图(约束到覆盖的中心) 标题标签 字幕标签 。。。还有任何信息 只要堆栈视图中只有一个排列的子视图,原型代码就可以正常工作。当堆栈中有多个排列的子视图时,显示不居中,覆盖本身似乎定位错误。我添加了一些背景色来验证这种行为。视图如下所示: 我已将原型代码发布在 我甚至不确定我的做法是否正确。任

我试图创建一个模式视图来显示一些信息。此模式视图还将覆盖整个视图,以防止与基础视图交互。自定义控件中的“我的视图”层次结构如下所示:

  • 自视图(100%面积)
    • 覆盖窗口(100%面积)
      • 堆栈视图(约束到覆盖的中心)
        • 标题标签
        • 字幕标签
        • 。。。还有任何信息
只要堆栈视图中只有一个排列的子视图,原型代码就可以正常工作。当堆栈中有多个排列的子视图时,显示不居中,覆盖本身似乎定位错误。我添加了一些背景色来验证这种行为。视图如下所示:

我已将原型代码发布在


我甚至不确定我的做法是否正确。任何帮助都将不胜感激。

现在一切就绪。似乎为叠加窗口的高度和宽度锚点添加约束并不像我希望的那样有效。他们设置了正确的高度和宽度,但没有定位。叠加帧的原点为负数,导致其从左侧脱离屏幕。
我必须为前导锚、尾随锚、顶部锚和底部锚添加约束才能使其正常工作

func addConstraintsForOverlay(){
    overlayWindow?.leadingAnchor.constraintEqualToAnchor(leadingAnchor).active = true
    overlayWindow?.trailingAnchor.constraintEqualToAnchor(trailingAnchor).active = true
    overlayWindow?.topAnchor.constraintEqualToAnchor(topAnchor).active = true
    overlayWindow?.bottomAnchor.constraintEqualToAnchor(bottomAnchor).active = true
}

是否希望两个彩色视图共享相同的宽度?是。其目的是覆盖窗口将覆盖整个视图,以防止与下面的视图交互。蓝色是此视图控件的背景,绿色是其顶部覆盖窗口的背景色。您需要为stackview的子视图提供相同的宽度和高度约束,如果希望它们具有相同的大小,使用堆栈视图的整个想法是让子视图作为堆栈视图属性的pr设置排列,而不必添加自定义约束。根据设置,子视图应沿轴居中,这也是在堆栈视图上设置属性的对象。