์ฑ์ ๋ง๋ค๋ค๋ณด๋ฉด toast msg๋ฅผ ๋์์ ์ ๋ณด๋ฅผ ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ ์์ฝ๊ฒ๋ iOS์๋ ๊ทธ๋ฐ ๊ธฐ๋ฅ์ด ์๋ค..
์ง์ ๋ง๋ค์!
์ฐ์ UIView๋ฅผ ์์ํ๋ class๋ฅผ ๋ง๋ค์ด ์ค๋๋ค
public class ToastMessage: UIView {}
์ ๋ ์๋ก ์ข ๋ฅ์ ํ ์คํธ ๋ฉ์ธ์ง๋ฅผ ๋ง๋ค๊ฑฐ์์ (x๋ ์ ์ธ)
๊ทธ๋์ ์ด๋ฐ ํ๋กํผํฐ์ enum์ด ํ์ํฉ๋๋ค
public enum ToastType {
case common, alert, info
}
var text = UILabel()
var icon = UIImageView()
var type : ToastType
UI๋ ๊ฐ์ ์ทจํฅ๊ป ๋ง๋์๊ณ
(์๋ต)
ํ ์คํธ ๋ฉ์ธ์ง์ ํน์ง์ ์ ๊น ๋ด๋ค ์ฌ๋ผ์ง๋๊ฑฐ ์์์ ?
๊ทธ ๋ถ๋ถ์ ๊ตฌํํ๊ธฐ ์ํด animate๋ฅผ ์ฌ์ฉํ์ต๋๋ค
animate
animate๋ ์ด๋ ๊ฒ ์๊ฒผ๋๋ฐ์,
class func animate(
withDuration duration: TimeInterval,
animations: @escaping () -> Void,
completion: ((Bool) -> Void)? = nil
)
animations ๋ถ๋ถ์ ํด๋ก์ ๋ก ์คํํ ์ ๋๋ฉ์ด์ ์ ์์ฑํฉ๋๋ค
withDuration์ animations์ ์คํ์ํค๋๋ฐ ์ผ๋ง์ ๋์ ์๊ฐ์ ์์ํ ๊ฒ์ธ์ง ์ ๋ ฅํฉ๋๋ค
์ด๋จ์๋ก ์ ๋ ฅํ ์ ์์ด์!
completion์๋ animations๊ฐ ๋๋๊ณ ๋์ ์คํํ ๋ด์ฉ์ ์์ฑํ ์ ์์ต๋๋ค
์ ๋ toastํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ฃผ์์ต๋๋ค
public func toast(){
UIView.animate(withDuration: 0.5) {
print("toast : \(self.text.text!)")
self.isHidden = false
self.alpha = 0.9
} completion: { _ in
UIView.animate(withDuration: 0.5, delay: 2) {
self.alpha = 0
} completion: { _ in
self.isHidden = true
}
}
}
alpha๋ 0~1์ฌ์ด์ ์ซ์๋ฅผ ์ ๋ ฅํ์ฌ ํฌ๋ช ๋๋ฅผ ์กฐ์ ํฉ๋๋ค
(0์ ๊ฐ๊น์ธ ์๋ก ํฌ๋ช ํด์ ธ์)
์ด ํจ์๋ 0.5์ด์ ๊ฑฐ์ณ์ ํฌ๋ช ๋๋ฅผ 0.9๋ก ์ฌ๋ฆฌ๊ณ
์ ๋๋ฉ์ด์ ์ด ๋๋ ํ์๋ 2์ด ํ์ 0.5์ด์ ๊ฑฐ์ณ์ ํฌ๋ช ๋๋ฅผ 0์ผ๋ก ๋ง๋๋ ๊ฒ์ด์์
์ฆ, ํ ์คํธ ๋ฉ์ธ์ง๊ฐ 2์ด ๋ด๋ค๊ฐ ์ฌ๋ผ์ง๋ค๋ ๊ฑฐ์์
isHidden์ ์จ์ค ์ด์ ๋ ํน์๋ toast msg ๋๋ฌธ์ ๋ค๋ฅธ view๋ค์ด ๋ฐฉํด๋ฐ์๊น๋ด ์์ฑํด์ฃผ์์ต๋๋ค~!
toast๋ฒํผ์ ๋๋ ์ ๋๋ง ๋ฉ์ธ์ง๋ฅผ ๋์ฐ๊ธฐ ์ํด์
ToastMessage init๋ถ๋ถ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ค๋๋ค
public init(type: ToastType){
self.type = type
super.init(frame: .zero)
// ์ด๊ธฐํ ํ ๋ view ์๋ณด์ด๊ฒ
self.isHidden = true
self.alpha = 0
}
ToastMessage๋ฅผ ์ฌ์ฉํ ๋ทฐ์ปจ์์ toast()๋ฅผ ํธ์ถํด์ฃผ๋ฉด ์ด๋ ๊ฒ!
๊ฐ๋จํ๊ฒ ๋์ธ ์ ์๋ Toast Message๋ฅผ ๊ตฌํํด๋ณด์์ต๋๋ค :)
'๐ฑ iOS > UIKit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[UIKit] TableView Multiple Cell, multi type json data parsing (0) | 2023.06.27 |
---|---|
[UIKit] CustomDatePicker ๋ง๋ค๊ธฐ (3/3) (0) | 2023.04.03 |
[UIKit] CustomDatePicker ๋ง๋ค๊ธฐ (2/3) (0) | 2023.01.08 |
[UIKit] CustomDatePicker ๋ง๋ค๊ธฐ (1/3) (0) | 2023.01.08 |
Passing Data (์ง์ ์ ๋ฌ๋ฐฉ์) (0) | 2022.06.27 |