CALayer委托方法drawLayer没有被调用 [英] CALayer delegate method drawLayer not getting called

查看:138
本文介绍了CALayer委托方法drawLayer没有被调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的对象NSObject的子类有CALayer实例变量。我用它来绘制和缓存内容,其委托设置为我的对象。

My object a sub class of NSObject has CALayer instance variable. I use it for drawing and caching content with its delegate set to my object.

但由于某种原因 drawLayer:inContext:方法永远不会被调用。而 actionForLayer:forKey:委托方法确实被调用暗示委托正确设置 layer.delegate = self in对象的init方法。

But for some reason drawLayer:inContext: method NEVER gets called. Whereas actionForLayer:forKey: delegate method does get called implying the delegate is getting set properly with layer.delegate = self in the object's init method.

关于阻止我的图层绘制方法的任何建议 drawLayer:inContext:来自被调用?

Any suggestions on what is preventing my layer drawing method drawLayer:inContext: from getting called ?

我经常被称为 [layer setNeedDisplay] 。所以我想这是一个根本性的错误。

I am called the [layer setNeedDisplay] often. So I guess it is some fundamental error.

推荐答案

drawLayer:inContext:如果您的框架不会被调用是CGRectZero或屏幕外。此外,如果您的CALayer未附加到现有的屏幕图层,则无论您多少次调用 setNeedsDisplay

drawLayer:inContext: won't get called if your frame is CGRectZero or offscreen. Also, if your CALayer isn't attached to an existing onscreen layer, it will never draw, no matter how many times you call setNeedsDisplay

这篇关于CALayer委托方法drawLayer没有被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆