본문 바로가기
Developer/iOS, Swift

[Swift] 안드로이드처럼 Toast 메시지 띄우기

by Doony 2019. 12. 9.

안드로이드에는 Toast라는 기능을 내장하고 있습니다. 창을 띄우지 않고, 작은 메시지만 바로 띄워서 문구를 보여주는 기능인데요. 예를 들어 뒤로 가기 버튼을 눌렀을 때, '한번 더 누르면 종료됩니다' 라고 뜨는게 바로 토스트 메시지이다.

 

스위프트는 토스트 기능 자체를 라이브러리화하고 있진 않은 듯 하다. 따라서 View를 새로 만들어 띄우는 방식으로 직접 프로그램을 짜서 해주는 듯 하다.

 

코드는 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    func showToast(message : String) {
        let width_variable:CGFloat = 10
        let toastLabel = UILabel(frame: CGRect(x: width_variable, y: self.view.frame.size.height-100, width: view.frame.size.width-2*width_variable, height: 35))
        // 뷰가 위치할 위치를 지정해준다. 여기서는 아래로부터 100만큼 떨어져있고, 너비는 양쪽에 10만큼 여백을 가지며, 높이는 35로 
        toastLabel.backgroundColor = UIColor.black.withAlphaComponent(0.6)
        toastLabel.textColor = UIColor.white
        toastLabel.textAlignment = .center;
        toastLabel.font = UIFont(name: "Montserrat-Light", size: 12.0)
        toastLabel.text = message
        toastLabel.alpha = 1.0
        toastLabel.layer.cornerRadius = 10;
        toastLabel.clipsToBounds  =  true
        self.view.addSubview(toastLabel)
        UIView.animate(withDuration: 4.0, delay: 0.1, options: .curveEaseOut, animations: {
            toastLabel.alpha = 0.0
        }, completion: {(isCompleted) in
            toastLabel.removeFromSuperview()
        })
    }
cs

 

원리는 단순하다. UILabel을 programmatic하게 만들어주고, 위치나 너비, 폭 등을 설정해준다. 여기에 투명도를 지정해주면 안드로이드의 Toast와 동일한 효과를 낼 수 있다.

댓글