티스토리 뷰
안녕하세요.
뭔가 통신이나 다른 부분에 대해 올리고 싶은데 자꾸 일이 생겨서 간단한 것만 올리게 되네요;;
이번에는 안드로이드 개발자 분들이라면 한번씩 써봤을 Toast 메세지 를 만들어볼까 합니다.
# Toast Message 가 뭔가요?
- 일반적으로 화면 하단에 검정색 반투명한 글씨창이 뜨는걸 말합니다.
- 아래 사진의 화면 하단에 검은색 창을 의미합니다.
#코드
- 원리는 글자 사이즈를 구해서 양 옆을 조금 늘린 사이즈로 창을 띄우는 방식입니다.
func getTextSize(text : String,font: UIFont)->CGSize{// 글자 사이즈 계산용
let fontAttributes = [NSAttributedString.Key.font: font]
let text = text
let size = (text as NSString).size(withAttributes: fontAttributes as [NSAttributedString.Key : Any])
return size // 여기서 나오는 사이즈를 기반으로 크기가 결정됩니다.
}
func showToastMessage(self: UIViewController,font: UIFont,message : String){
let customSize = getTextSize(text: message, font: font)
let customWidth = customSize.width + 40 // 줄이시면 좌우 여백이 줄어듭니다.
let toastLabel = UILabel(frame: CGRect(x: self.view.frame.size.width/2 - customWidth/2, y: self.view.frame.size.height-100, width: customWidth, height: customSize.height+32))
toastLabel.backgroundColor = UIColor.black.withAlphaComponent(0.6)
toastLabel.textColor = UIColor.white
toastLabel.font = font
toastLabel.textAlignment = .center
toastLabel.text = message
toastLabel.alpha = 1.0
toastLabel.layer.cornerRadius = 8; // 좀더 둥글둥글한걸 원하시면 늘리시면됩니다.
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()
})
}
#사용법
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.showToastMessage(self: self, font: UIFont.systemFont(ofSize: 10), message: "내가 바로 Toast")
// 원하시는 곳에 넣어주시면 됩니다.
}
}
이렇게 원하시는 폰트와 문구를 넣으면 위 화면처럼 작동하게 됩니다.
해당 코드는 아래 글을 참고해서 만든 코드입니다.
참고해주시길 바랍니다.
https://royhelen.tistory.com/46
안드로이드에서는 간단한 부분이지만
iOS 는 별도로 만들어야 하는 부분이기도 하고
생각보다 자주 쓰이는 부분이라 올려 봅니다.
(참고로 저는 여백이 두툼한게 좋아서 저렇게 생긴거라 얇은 게 좋으신 분들은 숫자를 바꾸면 쉽게 조절할 수 있습니다.)
누군가에게 도움이 되길 바라며
오늘도 파이팅입니다.
'iOS개발 > Swift 기본' 카테고리의 다른 글
Swift 반복 이벤트 설정 (Timer) (0) | 2022.12.09 |
---|---|
Swift UserDefaults로 간단한 데이터 저장하기 (0) | 2022.12.07 |
Swift 알림창(UIAlertController) 띄우기 (0) | 2022.11.03 |
Swift Date <-> String 타입 변경하기 (0) | 2022.10.14 |
Swift UIColor hex 주고 받기 (0) | 2022.09.23 |
댓글