我正在制作一个Cocoa应用,使用Core Animation创建自定义UI。但是,每当我在周围拖动一些图层时,它们通常会在其他图层上留下一些“残差/痕迹”。
到目前为止,我的猜测是它与我对[setNeedsDisplay]的使用有关。据我所知,当我在一个图层上拖动时,不需要在该图层上调用此方法(因为该图层中没有任何更新)。但是留下的残差在其他层上(所以也许他们需要调用该方法?但是我怎么知道拖动鼠标经过了哪一层?)
例如,大多数图纸很简单:
// Block view is a subclass of CALayer
@implementation BlockView
-(void)drawInContext:(CGContextRef)context
{
CGRect bounds = CGContextGetClipBoundingBox(context);
CGContextSetFillColorWithColor(context, color);
CGContextFillRect(context, bounds);
}
@end
但是,有时我会有多个级别的图层(最多3个);但我认为这不是问题。
我不知道这可能是什么原因?这个问题很难显示具体的代码示例,但是欢迎一些提示或可能的猜测。
最佳答案
一个普遍的问题是超越界限。如果在绘图例程中使用[self frame]而不是[self bounds],则会发生这种情况。
关于objective-c - 核心动画和CALayers中的残差/痕迹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1883927/