iOS堆栈 View 约束问题

标签 ios swift

我正在尝试创建一个模态视图来显示一些信息。该模态视图也将覆盖整个 View ,以防止与底层 View 交互。我在自定义控件中的 View 层次结构如下:

  • 自身 View (100% 的面积)
    • 覆盖窗口(面积的 100%)
      • StackView(限制在覆盖层的中心)
        • 标题标签
        • 字幕标签
        • ...以及任何信息

只要堆栈 View 中只有一个排列的 subview ,原型(prototype)代码就可以正常工作。当堆栈中有多个排列的 subview 时,显示不会居中,并且覆盖本身似乎定位错误。我添加了一些背景颜色来验证此行为。 View 如下所示:
enter image description here

我已将原型(prototype)代码发布在 prototype gist

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

最佳答案

现在一切都准备好了。似乎为覆盖窗口的高度和宽度 anchor 添加约束并没有像我希望的那样工作。他们设置了正确的高度和宽度,但没有定位它。覆盖层的框架具有负原点,导致其从左侧离开屏幕。
我必须为前导、尾随、顶部和底部 anchor 添加约束才能使其正常工作。

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
}

关于iOS堆栈 View 约束问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35156951/

相关文章:

ios - 如何实现图像组?

ios - Bundle.preferredLocalizations 困惑

ios - 如何仅使用分享扩展分享图片或视频

swift - 在 Swift 中围绕我的当前位置画圈

swift - 我可以在 where 子句中使用 or ( || ) 吗?

ios - Dismiss 后父 UIViewController 不会改变方向

ios - XDK IOS 构建失败

ios - 如何使用 AVPlayer addperiodictimeobserverforinterval 函数更新 uilabel?

swift - 在 Swift 4 中将属性观察器添加到 Decodable 协议(protocol)

ios - 动画切换 CollectionViewLayout