2015-11-22 16 views
8

Tôi muốn hiển thị thông báo trên màn hình sau khi người dùng nhấn một nút. Sau đó tôi muốn thông báo biến mất sau khoảng một giây. Tốt hơn là nó sẽ mờ đi thay vì một sự biến mất khó khăn.Làm cách nào để hiển thị thông báo trên màn hình trong vài giây?

Tôi không muốn khóa giao diện người dùng trong khi hiển thị thông báo. Trong thực tế, tôi muốn bộ hẹn giờ khởi động lại tin nhắn nếu nút được nhấn lần nữa. Tôi không chắc chắn liệu có nên sử dụng NSTimer, dispatch_after hay không hoặc nếu có các tùy chọn khác.

Tôi hiện đang dự định sử dụng nhãn NSTimer và UI để đạt được điều này và tôi sẽ chỉ sống với một sự biến mất khó khăn. Đó có phải là cách tốt nhất để làm điều đó không?

EDIT: Để làm rõ, thông báo sẽ không nhất thiết phải giống nhau mỗi khi nhấn nút. Tôi không hoàn toàn chắc chắn nếu điều này là có liên quan mặc dù.

+3

Bạn có thể làm điều này với một animationWithDuration và một handler hoàn thành để thiết lập lại giá trị của hình ảnh động. – mn1

+0

Bạn muốn một cái gì đó giống như những văn bản màu trắng trên màu đen bán trong suốt, nhắc nhở rect tròn được sử dụng để xuất hiện và biến mất khi ví dụ: Xcode đã thành công trong việc xây dựng một dự án cách đây vài năm. Hoặc ứng dụng iOS Stack Exchange làm gì khi bạn bỏ phiếu bình luận, v.v ...? –

+0

@NicolasMiari Tôi muốn nó giống như một số văn bản trên một slide powerpoint hiển thị trên slide hiện có và sau đó biến mất sau một giây trong khi slide vẫn giữ nguyên. Sự khác biệt duy nhất là "slide" của tôi có chứa một nút gây ra sự xuất hiện của văn bản. – FlashDrive

Trả lời

3

tôi đã có thể thực hiện những gì tôi muốn sau khi nghiên cứu những gì đã được đề xuất trong các bình luận của @ mn1. Tôi đã sử dụng animateWithDuration để làm mờ nhãn. Dưới đây là một số mã ví dụ:

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

Điều này hiển thị Chế độ xem cảnh báo trên màn hình và tự động đóng sau 1 giây. Bạn có thể đặt thời gian.

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

Cảnh báo sẽ thực sự bao gồm nút và ngăn tương tác với toàn bộ ứng dụng. Tôi đang tìm một cách để hiển thị một số văn bản cho người dùng chứ không phải là một cảnh báo khó chịu. – FlashDrive

6

Swift 3 Giải pháp:

// 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() 
    } 
    } 

Swift 2 Giải pháp:

// 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

Mã này trở nên ngắn hơn với iOS 10. Nhờ @fatihyildizhan

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)}) 
} 
Các vấn đề liên quan