Monotouch: UILabel исчезает через t секунд, как - PullRequest
1 голос
/ 27 апреля 2011

Как можно скрыть UILabel через t секунд?

Могу ли я использовать фоновый поток для этого?

Заранее спасибо.С уважением.

РЕДАКТИРОВАТЬ

Для тех, кто заинтересован, следуя совету Люка:

var timer  = NSTimer.CreateScheduledTimer(TimeSpan.FromSeconds(5), delegate{
 InvokeOnMainThread(delegate{

   UIView.BeginAnimations(null);
   UIView.SetAnimationDuration(0.5);
   UIView.SetAnimationTransition(UIViewAnimationTransition.None, labelToAnimateReference, true);
   UIView.SetAnimationDelegate(this);                           
   labelToAnimateReference.Alpha = 0.0f;
   UIView.CommitAnimations();
  });
});

1 Ответ

2 голосов
/ 27 апреля 2011

Поскольку вы меняете пользовательский интерфейс, я бы предложил использовать основной поток для фактического скрытия метки, но да, это возможно:

NSTimer timer  = NSTimer.CreateScheduledTimer(t, delegate{
    InvokeOnMainThread(delegate{
        label.Alpha = 0.0f;
    });
});

(где t - это int для времениВы хотели бы скрыть ярлык!)

РЕДАКТИРОВАТЬ Если вы хотите затемнить ярлык, я бы посоветовал изучить UIView анимации. См. Справочные документы здесь .Начиная с iOS 4.0+ предлагается использовать анимационные блоки UIView.Чтобы соответствовать вашему примеру, код будет выглядеть так:

NSTimer timer  = NSTimer.CreateScheduledTimer(t, delegate{
    InvokeOnMainThread(delegate{
        UIView.Animate(0.5f, delegate{
            label.Alpha = 0.0f;
        });
    });
});

Первое значение - это продолжительность анимации.Также, чтобы отметить, где я использую эти delegate{}, вы также можете сделать что-то вроде:

NSTimer timer = NSTimer.CreateScheduledTimer(t, FadeLabelOut());

// later on

void FadeLabelOut()
{
    // do your stuff here
}
...