Проблема анимации TapGesture форм Xamarin - PullRequest
0 голосов
/ 15 октября 2018

Я хочу показать второй макет стека, когда на первый макет стека нажимается анимация.Он хорошо работает после первой попытки.

Мой вопрос: анимация не работает с первой попытки.

код -

private TapGestureRecognizer tg;
    public MainPage()
    {
        InitializeComponent();
        answerStack.IsVisible = false;

        tg = new TapGestureRecognizer();
        tg.Tapped += Tg_Tapped;
        questionStack.GestureRecognizers.Add(tg);
    }

    public Animation animate;

    void Tg_Tapped(object sender, EventArgs e)
    {
        var answerHeight = answerStack.Height;

        answerStack.IsVisible = !answerStack.IsVisible;
        questionStack.GestureRecognizers.Remove(tg);

        animate = new Animation(d => answerStack.HeightRequest = d, 0, answerHeight);

        animate.Commit(answerStack, "a", 5, 450, Easing.CubicIn, (data, x) => {
            Device.BeginInvokeOnMainThread(() => {
                answerStack.HeightRequest = answerHeight;
                questionStack.GestureRecognizers.Add(tg);
            });
        }, null);
    }

GitHub Link - https://github.com/manieshavirt/XamarinAccordion

Причиной проблемы является то, что "answerHeight" устанавливается в -1 во время первой анимации.В последующих анимациях «answerHeight» выводится из высоты содержимого ответа, поэтому имеется плавная анимация. Если я вручную устанавливаю значение «answerHeight» во время первой анимации, переход анимации выглядит плавно.Однако я не хочу устанавливать значение вручную, вместо этого мне нужно извлечь значение из высоты содержимого ответа во время первой анимации.

Как мне этого добиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...