CALayer:自定义动画属性,用于更新内置的动画属性

时间:2015-05-31 11:39:45

标签: ios objective-c iphone calayer cabasicanimation

我正在CAGradientLayer派生类上创建自定义动画属性,该类必须更改CAGradientLayer基类上其他内置的可动画属性,并且想知道最佳方法是什么。目前我正在更新显示方法中的依赖属性:

@implementation CustomGradientLayer

@dynamic myCustomProperty;

+ (BOOL) needsDisplayForKey: (NSString*)aKey
{
    BOOL needsDisplay = [aKey isEqualToString: @"myCustomProperty"];
    if (!needsDisplay)
    {
        needsDisplay = [super needsDisplayForKey: aKey];
    }
    return needsDisplay;
}

- (void) display
{
    CGFloat myCustomProperty = [self.presentationLayer myCustomProperty];


    [CATransaction begin];
    [CATransaction setDisableActions: YES];

    // Update dependant properties on self

    [CATransaction commit];

    [super display];
}

是否可以安全地更新自定义属性设置器中的依赖属性,而不会影响基础CALayer魔法?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,但对于任何感兴趣的人,您都可以使用以下方法而不会干扰CALayar的内容:

- (void) didChangeValueForKey: (NSString*)aKey (void) didChangeValueForKey: (NSString*)aKey
{
    // Update dependent properties
}