我有一个CALayer,我只为可见区域提供内容(有点类似于CATiledLayer)。问题是,在CALayer的可见区域发生变化时,似乎没有办法接收通知,以便调用displayLayer。我目前子类化并挂接setPosition,setBounds和setTransform,但是这并不能捕获超级视图/图层更改的情况(例如,UIScrollView通过更改滚动视图原点来滚动)。我将代码中的父视图和setNeedsDisplay散布在一起。CALayer的可视区域更改时的通知?
有没有更好的方法?
感谢您的回复。 visbleRect是只读属性,所以不提供通知。 needsDisplayOnBoundsChange只捕捉到我的图层边界,而不是包含我的图层的视图/图层堆栈中的任何更改。同样,setNeedsDisplayForKey只捕获对我的图层的更改(尽管它可能是一种比覆盖方法更好的解决方案,正如我目前所做的那样)。 CGContextGetClipBoundingBox()是没用的,因为我没有CGContext。我直接使用未由CG渲染的图像设置图层内容。仍然没有一般解决方案 – 2013-04-18 20:40:58