gpt4 book ai didi

ios - drawRect :? 之后有没有直接调用的方法

转载 作者:行者123 更新时间:2023-11-29 11:00:23 27 4
gpt4 key购买 nike

我有两个 UIView 子类,比如“A 类”和“B 类”。类 A 在其初始化程序中具有代码 [self addSubview:instanceOfClassB];。而在 B 类的 drawRect: 中是代码行 [self addSubview:imageViewInstance];。同样在 B 类的 drawRect: 中,我为该 imageView 实例的 animationImagesanimationDurationanimationRepeatCount 属性赋值。但是,我还在这个 UIImageView 实例上调用了 startAnimating,但它总是使应用程序崩溃。然后,我尝试从 B 类的 super View A 类的 drawRect: 对该 UIImageView 实例调用 startAnimating。但是,它仍然因错误而崩溃:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

并且在代码 [imageView startAnimating]; 的行上有“Thread 1: signal SIGABRT”消息。

我怀疑它在这里崩溃是因为 B 类的 drawRect 在 A 类的 drawRect 之后被调用,所以当我告诉 ImageView 开始动画时它崩溃是因为尚未创建 ImageView 。所以基本上我要问的是我可以用什么方法告诉 ImageView 开始动画而不会崩溃

最佳答案

drawRect: 中修改状态或调用与绘图无关的方法听起来是个很糟糕的主意 - 你不应该在 drawRect: 中做任何事情,除了绘图。

drawRect: 在 View 或 View 的一部分需要重新绘制时自动调用。重绘操作的​​频率和顺序由系统决定,并取决于几件事( View 层次结构、遮挡等)——所以你也不能依赖于 drawRect: 的特定顺序> 被调用。

您可以将对象的设置移出绘图代码并根据用户交互启动动画。

关于ios - drawRect :? 之后有没有直接调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16128801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com