2015-11-22 17 views
8

ユーザーがボタンを押した後に画面にメッセージを表示したい。私は約1秒後にメッセージが消えたがっています。好ましくは、消えていくのではなく、消え去ります。数秒間画面にメッセージを表示する方法は?

私は、メッセージの表示中にUIをロックアップしたくないです。実際には、ボタンをもう一度押すと、メッセージのタイマーを再起動したいと思います。私は、NSTimer、dispatch_afterのどちらを使うのか、それとも他のオプションがあるのか​​不明です。

これを達成するために現在NSTimerとUIラベルを使用する予定であり、私はただ難しい姿で生きていきます。それはそれを行う最善の方法ですか?

編集:明確にするために、メッセージは、ボタンが押されるたびに必ずしも同じではありません。私はこれが関係しているかどうかは完全にはわかりません。

+3

を@fatihyildizhanするiOSの10のおかげで短くなりました。 – mn1

+0

半透明の黒い丸い四角いプロンプトに、白いテキストのようなものが必要です。 Xcodeは数年前にプロジェクトを構築するのに成功しました。また、あなたがコメントなどを投票したときにiOS Stack Exchangeアプリが何をするのですか? –

+0

@ NicolasMiariパワーポイントスライドのテキストのように、既存のスライドに表示されてから、スライドが同じままの状態で1秒後に消えるようにしたいと思います。唯一の違いは、私の「スライド」にはテキストが表示されるボタンが含まれていることです。 – FlashDrive

答えて

3

私はでコメントで示唆されたものを研究した後に何を望むかを達成することができました@ mn1。 animateWithDurationを使用してラベルをフェードアウトしました。ここではいくつかのサンプルコードは、次のとおりです。

myLabel.hidden = false 
UIView.animateWithDuration(0.5, animations: {() -> Void in 
    self.myLabel.alpha = 0 
}) 
4

これは、画面上のアラートビューを表示し、1秒後に自動的に閉じます。時間を設定することができます。

var alert:UIAlertController! 
    func showAlert() { 
     self.alert = UIAlertController(title: "Alert", message: "Wait Please!", preferredStyle: UIAlertControllerStyle.Alert) 
     self.presentViewController(self.alert, animated: true, completion: nil) 
     NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("dismissAlert"), userInfo: nil, repeats: false) 
    } 

    func dismissAlert(){ 
     // Dismiss the alert from here 
     self.alert.dismissViewControllerAnimated(true, completion: nil) 
    } 
+0

警告は実際にはボタンを覆い、アプリ全体とのやりとりを防ぎます。私は目立たないアラートではなく、ユーザーにテキストを表示する方法を探しています。 – FlashDrive

6

スウィフト3ソリューション:

// Define a view 
    var popup:UIView! 
    func showAlert() { 
    // customise your view 
    popup = UIView(frame: CGRect(x: 100, y: 200, width: 200, height: 200)) 
    popup.backgroundColor = UIColor.redColor 

    // show on screen 
    self.view.addSubview(popup) 

    // set the timer 
    Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(self.dismissAlert), userInfo: nil, repeats: false) 
    } 

    func dismissAlert(){ 
    if popup != nil { // Dismiss the view from here 
     popup.removeFromSuperview() 
    } 
    } 

スウィフト2ソリューション:

// Define a view 
    var popup:UIView! 
    func showAlert() { 
    // customise your view 
    popup = UIView(frame: CGRect(x: 100, y: 200, width: 200, height: 200)) 
    popup.backgroundColor = UIColor.redColor() 

    // show on screen 
    self.view.addSubview(popup) 

    // set the timer 
    NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector("dismissAlert"), userInfo: nil, repeats: false) 
    } 

    func dismissAlert(){ 
    // Dismiss the view from here 
    popup.removeFromSuperview() 
    } 

    // Don't forget to call showAlert() function in somewhere 
1

このコードは、あなたがanimationWithDurationとアニメーションの値をリセットするために完了ハンドラでこれを行うことができます

fun showAlert() { 
    let alert = UIAlertController(title: "Alert", message: "Wait Please!", preferredStyle: .alert) 
    self.present(alert, animated: true, completion: nil) 
    Timer.scheduledTimer(withTimeInterval: 3.0, repeats: false, block: { _ in alert.dismiss(animated: true, completion: nil)}) 
} 
関連する問題