가장 잘 쓰고 있는 하나중에 손에 꼽힌다.
안드로이드에 있는 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()
}
}
}
}
'[ 자기개발 ] > [ Swift ]' 카테고리의 다른 글
Alert.swift (0) | 2020.11.19 |
---|---|
UIColor+Extension.swift (0) | 2020.11.19 |