Анимация пользовательского свойства в CALayer - PullRequest
3 голосов
/ 12 февраля 2011

Я пытаюсь заставить анимацию работать с пользовательским свойством в 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;

    }
    }

Ответы [ 2 ]

0 голосов
/ 27 апреля 2012

Это, к сожалению, невозможно сделать с MonoTouch - но мы исправили это для следующей бета-версии (5.3.3), которая, как мы надеемся, скоро выйдет.используйте этот пример: https://github.com/xamarin/monotouch-samples/tree/monotouch-5.4/CustomPropertyAnimation, чтобы увидеть, как это сделать.

0 голосов
/ 12 февраля 2011

MonoTouch не поддерживает ту же автоматическую регистрацию KVC, что и MonoMac, поэтому вы должны использовать:

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