CALayer - 奇怪的drawInContext错误

时间:2013-06-09 06:09:22

标签: ios uiview calayer cgcontext

我目前有一个关于CALayer子类的非常奇怪的错误。此CALayer子类负责绘制UI元素,并包含在自定义UIView类中。当UIView收到触摸事件时,它会更改UIElementLayer的属性,从而重新绘制图层。

但是,我遇到的奇怪问题是,该层偶尔会冻结。当我说冻结时,我的意思是drawInContext()直到下一分钟的第一秒才被调用。从字面上看,每当它冻结时,我都可以指望它在下一分钟的00分组恢复正常。我已经尝试调试我的所有功能,但我找不到发生这种情况的原因。关于可能导致这种情况的任何想法?

该课程的详细信息如下:

@interface UIElementLayer : CALayer

@property (nonatomic) CGFloat beginningValue;
@property (nonatomic) CGFloat endingValue;
@property (nonatomic) BOOL shouldReset;
@end

@implementation UIElementLayer
@dynamic beginningValue, endingValue, shouldReset;

- (id)initWithLayer:(id)layer
{
    if (self = [super initWithLayer:layer])
    {
        if ([layer isKindOfClass:[UIElement class]])
        {
            UIElement *element = (UIElement *)layer;
            self.shouldReset = element.shouldReset;
            self.startingValue = element.startingValue;
            self.endingValue = element.endingValue;
        }
    }

    return self;
}

+ (BOOL)needsDisplayForKey:(NSString *)key
{
    if ([key isEqualToString:@"startingValue"] ||
        [key isEqualToString:@"endingValue"]
       || [key isEqualToString:@"shouldReset"])
    {
        return YES;
    }

    return [super needsDisplayForKey:key];

}

0 个答案:

没有答案