是否有一个在viewDidLayoutSubviews之后调用的方法?

时间:2014-08-18 17:23:20

标签: ios objective-c swift

我需要将一个CALayer添加到UILabel,但只有在UILabel更改了它的帧之后。 UILabel在viewDidLayoutSubviews方法中更改其框架,如果我在那里添加CALayer,它将创建多个CALayers实例,因为多次调用viewDidLayoutSubviews。我在尝试删除所有CALayer之前尝试删除所有CALayer,但有时也删除了文本。我刚刚使用self.eventAttending!.layer.sublayers = nil将子图层设置为null。

所以,我认为对我的问题最简单的答案就是在viewDidLayoutSubviews中调整帧后简单地添加CALayer,这就引出了我的问题:在viewDidLayoutSubviews之后调用了什么方法?

2 个答案:

答案 0 :(得分:7)

viewDidLayoutSubviews之后没有始终调用的方法,它在创建过程中被调用,但也可以在视图中发生事件时调用,例如添加新的子视图。

最好的办法是为你的图层创建一个参考变量,这样就可以删除它,根据需要进行调整,或者只检查你的参考方差是否为零,然后再重新创建它。

答案 1 :(得分:3)

如果需要,可以在需要时添加图层或子视图。让layoutSubviews完成它的工作。

如果只能在布局过程完成后添加图层,那么在布局阶段你做错了。

修复您的设计,这是最好,最简单的方法。