在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