Исчезновение UILabel, изменение текста, возвращение назад: анимируется только исчезновение - PullRequest
1 голос
/ 21 ноября 2011

Простое задание: я хочу потушить UILabel (альфа = 0,0), изменить текст, затем вернуть его (альфа = 1,0f) и все это анимированное. Я понял, что затухание не анимировано, и сделал небольшое тестовое приложение.

Если я запускаю его, я вижу, что при нажатии кнопки метка исчезает мгновенно, а затем снова исчезает. Почему исчезновение игнорируется? Я искал SO, и я нашел код в точности так, как я его использую.

Что здесь не так? Я должен разделить это? Если анимация затухания заканчивается, создайте еще одну, которая постепенно исчезает?

UIButton btn = UIButton.FromType(UIButtonType.RoundedRect);
btn.Frame = new RectangleF(40, 40, 100, 30);

window.AddSubview(btn);

UILabel lbl = new UILabel(new RectangleF(100, 100, 100, 30));
lbl.Text = "A label";
window.AddSubview(lbl);
window.MakeKeyAndVisible ();

btn.TouchUpInside += delegate {
    UIView.Animate(1.0f, delegate {
        lbl.Alpha = 0.0f;
        lbl.Alpha = 1.0f;
    }, null);
};

1 Ответ

2 голосов
/ 22 ноября 2011

Я не думаю, что вы можете анимировать одно и то же свойство дважды (внутри одного и того же делегата).Существуют и другие, более продвинутые API, позволяющие создавать более сложные анимации, но я думаю, что вы можете легко подделать этот, используя:

btn.TouchUpInside += delegate {
    UIView.Animate (0.5f, delegate {
        lbl.Alpha = 0.0f;
    }, delegate {
        UIView.Animate (0.5f, delegate {
            lbl.Alpha = 1.0f;
        });
    });
};

, который просто выполняет вторую часть вашей анимации внутри завершение действие и разбивает 1,0 с раз в два.YMMV

...