自定义 UIControl(滑块)在与交互之前不遵守约束

Custom UIControl (slider) does not abide by constraints until interacted with

我按照 this tutorial 构建了一个子class 是 UIControl 的自定义滑块。当控件以精确的大小、位置等以编程方式插入视图时效果很好

但是,我想使用 Storyboard 在视觉上对齐视图的组件,因此我将 @IBDesignable@IBInspectable 添加到自定义滑块 class。这是我的问题:

  1. 在 Storyboard 中,我添加了自定义滑块并为 "Trailing Space to superview" 和 "Leading Space to superview" 添加了约束。
  2. 但是,当我 运行 在我的设备上使用它时,最初它不遵守上面设置的限制,直到我与滑块互动(触摸按钮) 突然强制执行约束。
  3. 我试图在 init (coder: NSCoder) 方法中调用 setNeedsDisplay,但没有任何效果。

有人知道为什么会这样吗?我该如何解决?

init 中调用 setNeedsDisplay 显然为时过早。尝试 viewWillAppear 并尝试在控制器的 view 上调用 layoutSubviews

当然,潜在的错误是情节提要中的错误配置。 (这将很难通过这个平台进行调试)。