가장 잘 쓰고 있는 하나중에 손에 꼽힌다.

 

안드로이드에 있는 Toast를 똑같이 구현해본거다. 

원래는 상 | 중 | 하 단으로 선택해서 구현을 했지만, 딱히 상 | 하 단을 이용하지 않아 지워버렸다!

 

써보고 싶은 사람은 써보고 개선할점이 있으면 알려주기 바랍니다.

아니면 개선해서 알려주세요 ㅎㅎ

 

xib 파일은 다운받아서 써보세요. 쓰는 방법은

 

Toast.showToastMessage(message: "")

let kTOAST_DURATION_VALUE: TimeInterval = 0.5
let kTOAST_HEIGHT_VALUE: CGFloat = 80.0
let kTOAST_WIDTH_RATE_VALUE: CGFloat = 0.9

class Toast: UIView {
    
    @IBOutlet weak var msg_lb: UILabel!

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    
    class func showToastMessage(message: String) {
        if let topVC = Utils.topViewController() {
            let name = String(describing: Toast.self)
            guard let loadedNib = Bundle.main.loadNibNamed(name, owner: self, options: nil) else { return }
            guard let toast = loadedNib.first as? Toast else { return }
            toast.msg_lb.text = message
            toast.show(activeView: topVC.view, message: message)
            
            toast.translatesAutoresizingMaskIntoConstraints = false
            toast.centerXAnchor.constraint(equalTo:topVC.view.centerXAnchor).isActive = true
            toast.centerYAnchor.constraint(equalTo:topVC.view.centerYAnchor).isActive = true
            toast.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.size.width * kTOAST_WIDTH_RATE_VALUE).isActive = true
        }
    }
    
    func show(activeView :UIView, message:String) {
        self.msg_lb.layer.cornerRadius = 5
        self.msg_lb.text = message
        
        self.alpha = 0
        self.isUserInteractionEnabled = false
        
        activeView.addSubview(self)
        
        UIView.animate(withDuration: kTOAST_DURATION_VALUE, delay: 0, options: .curveEaseIn, animations: {
            self.alpha = 1.0
        }) { (finished) in
            self.isUserInteractionEnabled = true
            UIView.animate(withDuration: kTOAST_DURATION_VALUE, delay: 1.0, options: .curveEaseIn, animations: {
                self.alpha = 0.0
            }) { (finished) in
                self.removeFromSuperview()
            }
        }
    }
}

 

Toast.swift
0.00MB
Toast.xib
0.00MB

 

 


 

'[ 자기개발 ] > [ Swift ]' 카테고리의 다른 글

Alert.swift  (0) 2020.11.19
UIColor+Extension.swift  (0) 2020.11.19

+ Recent posts