我需要将一个CALayer添加到UILabel,但只有在UILabel更改了它的帧之后。 UILabel在viewDidLayoutSubviews
方法中更改其框架,如果我在那里添加CALayer,它将创建多个CALayers实例,因为多次调用viewDidLayoutSubviews
。我在尝试删除所有CALayer之前尝试删除所有CALayer,但有时也删除了文本。我刚刚使用self.eventAttending!.layer.sublayers = nil
将子图层设置为null。
所以,我认为对我的问题最简单的答案就是在viewDidLayoutSubviews
中调整帧后简单地添加CALayer,这就引出了我的问题:在viewDidLayoutSubviews
之后调用了什么方法?
答案 0 :(得分:7)
在viewDidLayoutSubviews
之后没有始终调用的方法,它在创建过程中被调用,但也可以在视图中发生事件时调用,例如添加新的子视图。
最好的办法是为你的图层创建一个参考变量,这样就可以删除它,根据需要进行调整,或者只检查你的参考方差是否为零,然后再重新创建它。
答案 1 :(得分:3)
如果需要,可以在需要时添加图层或子视图。让layoutSubviews完成它的工作。
如果只能在布局过程完成后添加图层,那么在布局阶段你做错了。
修复您的设计,这是最好,最简单的方法。