Нарисуйте изображение, подождите 1 секунду, затем отклоните его - PullRequest
0 голосов
/ 08 февраля 2012

Я пытаюсь нарисовать зеленую коробку, где пользователь коснулся экрана, подождите 1 секунду, затем снимите флажок. Есть идеи, почему этот код не работает? Коробка никогда не красится. Если я использую поток, анимация стирает коробку.

public static void DrawClick(RectangleF rect, UIView theView)
    {
        var center = Center(rect);
        center.X = center.X + 30f;
        center.Y = center.Y + 30f;
        var greenRect = new RectangleF(center, new SizeF(60f, 60f));
        var clickView = new UIImageView(greenRect);
        clickView.Image = appDelegate.store.GetArt("greenbox.png");
        theView.AddSubview(clickView);
        //Wait 1 second
        System.Threading.Thread.Sleep(1000);
        clickView.RemoveFromSuperview();
    }

Спасибо, Rick

1 Ответ

2 голосов
/ 09 февраля 2012

Вы блокируете основной поток пользовательского интерфейса на 1 секунду, поэтому нет способа его визуализации.

Один из способов сделать это - System.Timers.Timer с продолжительностью 1 секунда, обязательно позвонив по номеру BeginInvokeOnMainThread, чтобы обновить пользовательский интерфейс при его запуске.

Пример здесь из BeginInvokeOnMainThread. Вот один для System.Timers.Timer .

Более прохладный вариант - использовать анимацию со значением Alpha, см. здесь .

...