在CALayer中为自定义属性设置动画

我试图让动画在CALayer中的自定义属性上工作。

但我只是无法弄清楚如何正确地工作。 关键“myCounter”永远不会发送到NeedsDisplayForKey。 有没有我失踪的一些步骤? 以下是我正在测试的课程,我将其添加到别处的图层中。 有没有人有一个自定义属性使用monotouch动画?

    public class TestProperty : CALayer
    {
    //this line updated based on feedback below**********
        public uint myCounter { [Export ("myCounter")] get; [Export setMyCounter:")]  set; }


    public TestProperty ()
    {
        CABasicAnimation anim = CABasicAnimation.FromKeyPath("myCounter");
        anim.From = NSNumber.FromInt32(1);
        anim.To = NSNumber.FromInt32(10);
        anim.Duration = 1.0f;
        anim.RepeatCount = float.MaxValue;
        anim.AutoReverses = true;
        this.AddAnimation(anim,null);
    }

    [Export ("needsDisplayForKey:")]
    static bool NeedsDisplayForKey (NSString key)
    {
        Console.WriteLine("{0}", key.ToString());

        if(key.Equals("myCounter"))
        {
            return true; //never gets here
        }
        else
            return false;

    }
    }

MonoTouch没有与MonoMac一样的自动KVC注册支持,因此您应该使用:

public uint myCounter { [Export ("myCounter")] get; [Export ("setMyCounter:")] set; }

对于MonoTouch来说,这是不可能的 - 但我们已经修复了它的下一个测试版本(5.3.3),希望很快就会发布。

一旦5.3.3发布,你可以使用这个示例:https://github.com/xamarin/monotouch-samples/tree/monotouch-5.4/CustomPropertyAnimation来看看如何去做。

链接地址: http://www.djcxy.com/p/74165.html

上一篇: Animating a custom property in a CALayer

下一篇: Animating a custom property of CALayer subclass