自定义 UIControl(滑块)在与交互之前不遵守约束
Posted
技术标签:
【中文标题】自定义 UIControl(滑块)在与交互之前不遵守约束【英文标题】:Custom UIControl (slider) does not abide by constraints until interacted with 【发布时间】:2015-08-02 15:51:45 【问题描述】:我按照this tutorial 构建了一个自定义滑块,它是UIControl
的子类。当控件以编程方式插入到视图中时,它的效果很好,具有确切的大小、位置等。
但是,我想使用 Storyboard 在视觉上对齐视图的组件,因此我将 @IBDesignable
和 @IBInspectable
添加到自定义滑块类中。这是我的问题:
-
在 Storyboard 中,我添加了自定义滑块,并为“Trailing Space to superview”和“Leading Space to superview”添加了约束。
但是,当我在我的设备上运行它时,最初它不遵守上面设置的约束,直到我与滑块交互(触摸按钮)并突然强制执行约束。
我尝试在
init (coder: NSCoder)
方法中调用setNeedsDisplay
,但没有任何效果。
有谁知道为什么会发生这种情况以及我该如何解决?
【问题讨论】:
【参考方案1】:在init
中调用setNeedsDisplay
显然为时过早。尝试viewWillAppear
并尝试在控制器的view
上调用layoutSubviews
。
当然,潜在的错误是情节提要中的错误配置。 (通过这个平台很难调试)。
【讨论】:
感谢您的提示。看起来诀窍是在我的自定义 UIControl 中覆盖 layoutSubviews,然后在那里调用 setNeedsDisplay 等。 @Mundi 你在哪里为自定义 UIControl 设置图层框架/边界? @PetrusTheron 你不应该。使用布局约束。以上是关于自定义 UIControl(滑块)在与交互之前不遵守约束的主要内容,如果未能解决你的问题,请参考以下文章