iOS自定义UIView设计:init vs layoutSubviews

问题描述:

我有一些自定义的UIViews。iOS自定义UIView设计:init vs layoutSubviews

我经常发现自己初始化自定义视图的init中的属性,但我也在那里设置了框架。

我通常会将layoutSubviews留空。如果我不希望我的视图边界发生变化,可以在init本身设置各种子视图框架,还是应该将其移至layoutSubviews?

我想提一下,其中一个原因,我这样做是因为我经常发现自己必须根据我的子视图的布局计算我的自定义视图的框架(大小)。

我通常在设置完所有子视图帧大小后调整自定义视图的框架大小。

您应该避免在layoutSubviews方法中分配/创建您的视图,因为它会被调用很多次。你可以在你的初始化方法中分配你的视图,并在layoutSubviews方法中进行布局。但是如果你的视图的框架与你的视图边界不相关,那么在你的初始化方法中设置它们的框架没有什么好担心的。