Edit: Updated for Swift 3
Here is a Swift 3 version based on wojciech_maciejewski's answer. This looks more like Android Toast and doesn't stack toasts on each other. It draws toast into the center of the screen. It can handle long multiline texts.
import UIKit
class ToastView: UIView {
    private static let hLabelGap: CGFloat = 40.0
    private static let vLabelGap: CGFloat = 20.0
    private static let hToastGap: CGFloat = 20.0
    private static let vToastGap: CGFloat = 10.0
    private var textLabel: UILabel!
    static func showInParent(_ parentView: UIView, _ text: String, duration: Double = 3.0) {
        let labelFrame = CGRect(x: parentView.frame.origin.x + hLabelGap,
                                y: parentView.frame.origin.y + vLabelGap,
                                width: parentView.frame.width - 2 * hLabelGap,
                                height: parentView.frame.height - 2 * vLabelGap)
        let label = UILabel()
        label.font = UIFont.systemFont(ofSize: 15.0)
        label.text = text
        label.backgroundColor = UIColor.clear
        label.textAlignment = NSTextAlignment.center
        label.textColor = UIColor.white
        label.numberOfLines = 0
        label.frame = labelFrame
        label.sizeToFit()
        let toast = ToastView()
        toast.textLabel = label
        toast.addSubview(label)
        toast.frame = CGRect(x: label.frame.origin.x - hToastGap,
                             y: label.frame.origin.y - vToastGap,
                             width: label.frame.width + 2 * hToastGap,
                             height: label.frame.height + 2 * vToastGap)
        toast.backgroundColor = UIColor.darkGray
        toast.alpha = 0.0
        toast.layer.cornerRadius = 20.0
        toast.center = parentView.center
        label.center = CGPoint(x: toast.frame.size.width / 2, y: toast.frame.size.height / 2)
        parentView.addSubview(toast)
        UIView.animate(withDuration: 0.4, animations: {
            toast.alpha = 0.9
            label.alpha = 0.9
        })
        toast.perform(#selector(hideSelf), with: nil, afterDelay: duration)
    }
    @objc private func hideSelf() {
        UIView.animate(withDuration: 0.4, animations: {
            self.alpha = 0.0
            self.textLabel.alpha = 0.0
            }, completion: { t in self.removeFromSuperview() })
    }
}
Usage from another controller: 
ToastView.showInParent(navigationController!.view, "Hello world")