如何在初始化期间正确设置子视图约束



我知道如何设置约束,但是我确实需要知道如何正确设置它。

基本上我有一个自定义视图子类Uiview,我需要一直在按钮上方指定标签(例如标签(的约束。

这样的约束,我在哪里设置?现在,我正在设置init函数中的约束,在指定约束后,我调用layoutIfNeeded。但是我还读到,您应该在layoutSubviews中设置约束,但是我又在某个地方阅读了Layoutsubviews会被多次调用,因此将约束设置在此处是没有意义的。

我也有点玩Layoutsubviews,我意识到我在layoutsubviews中设置的约束根本没有对布局没有任何影响。到目前为止,我仅通过直接通过呼叫布局来成功设置约束。

我也很好奇,这样做我只需要设置一次约束一次或每次刷新一次吗?

我在做这件事吗?我应该在哪里设置自定义类中的约束?

设置约束每次刷新时(例如,在layoutsubviews内部(会搅动约束并造成大量不必要的工作。有一个很棒的WWDC谈论,高性能自动布局。

https://developer.apple.com/videos/play/wwdc2018/220

,但总的来说,使用接口构建器将使您免于自己;也就是说,系统将在视图生命周期中的适当时间处理添加约束。

如果您必须以编程方式添加约束,则将其添加到初始化器中并调用Layoutifneed((是一个很好的解决方案。

最新更新