Swift
Swift_ Toast 만들기
JunsC
2024. 8. 2. 12:09
728x90
AOS 에서는 토스트 메시지 만들기 정말정말 쉽다
그냥
Toast. 하면 자동완성으로 만들어지기 때문이다
하지만 Swift 는 지원해주는 부분들이 의외로 적다고 느껴진다
그래서 토스트 메시지를 커스텀하여 만들어야 하는데
내가 사용한 코드를 적어놓으려 한다
class ToastManager {
static let shared = ToastManager()
private init() {}
func showToast(on viewController: UIViewController, message: String, withDuration duration: Double = 2.0, delay: Double = 0.5) {
let toastLabel = UILabel()
toastLabel.backgroundColor = UIColor.black.withAlphaComponent(0.7)
toastLabel.textColor = UIColor.white
toastLabel.font = UIFont.systemFont(ofSize: 25.0, weight: .bold) //
toastLabel.textAlignment = .center
toastLabel.text = message
toastLabel.alpha = 1.0
toastLabel.layer.cornerRadius = 10
toastLabel.clipsToBounds = true
toastLabel.numberOfLines = 0
toastLabel.translatesAutoresizingMaskIntoConstraints = false
let maxWidth = UIScreen.main.bounds.width - 40
let maxSize = CGSize(width: maxWidth, height: CGFloat.greatestFiniteMagnitude)
let expectedSize = toastLabel.sizeThatFits(maxSize)
toastLabel.frame.size = CGSize(width: expectedSize.width + 20, height: expectedSize.height + 20)
if let window = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) {
window.addSubview(toastLabel)
NSLayoutConstraint.activate([
toastLabel.centerXAnchor.constraint(equalTo: window.centerXAnchor),
toastLabel.bottomAnchor.constraint(equalTo: window.safeAreaLayoutGuide.bottomAnchor, constant: -50),
toastLabel.widthAnchor.constraint(equalToConstant: toastLabel.frame.width),
toastLabel.heightAnchor.constraint(equalToConstant: toastLabel.frame.height)
])
UIView.animate(withDuration: duration, delay: delay, options: .curveEaseOut, animations: {
toastLabel.alpha = 0.0
}, completion: { isCompleted in
toastLabel.removeFromSuperview()
})
}
}
}
짜란
구글링의 힘이다
그리고 ChatGpt 의 힘이다...
원래 아니여도 구현은 가능하지만 시간이 좀 걸릴 뿐...