์๋ ํ์ธ์~
์ ๋ง ์ค๋๊ฐ๋ง์ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ํฉ๋๋ค.
์ค๋์ ๊ฐ๋จํ๊ฒ ํ ์คํธ ๋ฉ์์ง๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด์
์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค : )
1. UILabel ์ปค์คํ ํ๊ธฐ
drawText(in:)์ Label์ text๊ฐ ๊ทธ๋ ค์ง ๋
rect์ ๊ดํ ๊ฐ์ ์์ ํ ์ ์๋ ๋ฉ์๋๋ก Override ํด์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
์ด๋, drawText(in:)์์ padding๊ฐ์ ์ค์ ํ์๊ฒ ๋๋ฉด ๋ฌธ์์ Label ์ฌ์ด์ ๊ณต๊ฐ์ด ์๊ธฐ๊ณ
ํ ์คํธ ๋ฉ์ธ์ง ํํ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
final class ToastLabel: UILabel {
// ์ํ์ข์ฐ์ ์ผ๋ง์ ํจ๋ฉ๊ฐ์ ์ค์ง UIEdgeInsets ๋ณ์ ์์ฑ
private var padding = UIEdgeInsets(top: 8.0, left: 8.0, bottom: 8.0, right: 8.0)
// intrinsicContentSize ์ฌ์ ์ ํ ์ฌ์ฉ
override var intrinsicContentSize: CGSize {
var contentSize = super.intrinsicContentSize
contentSize.height += padding.top + padding.bottom
contentSize.width += padding.left + padding.right
return contentSize
}
override init(frame: CGRect) {
super.init(frame: frame)
setToastLabel()
}
// ์์ ๋งํ๋ drawText Override!
override func drawText(in rect: CGRect) {
super.drawText(in: rect.inset(by: padding))
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setToastLabel() {
// Text
numberOfLines = 0
textColor = .white
textAlignment = .center
// View
backgroundColor = .black
layer.cornerRadius = 10
layer.masksToBounds = true
}
}
2. Extension ์ฌ์ฉํ๊ธฐ
์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๊ฒ ์ง๋ง ๊ฐ๋จํ ํ๋ก์ ํธ๋ค์ ํ ์คํธํ ๋๋ ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
extension UIViewController {
func showToast(message: String) {
let toastMessage = ToastLabel() // ์์ ๋ง๋ค์๋ Custom Label
toastMessage.text = message
view.addSubview(toastMessage)
toastMessage.snp.makeConstraints { make in
make.width.lessThanOrEqualTo(UIScreen.main.bounds.width * 0.75)
make.center.equalToSuperview()
}
UIView.animate(withDuration: 2, delay: 0, options: .curveEaseInOut) {
toastMessage.alpha = 0
} completion: { _ in
toastMessage.removeFromSuperview()
}
}
}
3. ํจ๋ฉ ์ ์ฉ ์ ๋ชจ์ต
4. ํจ๋ฉ ์ ์ฉ ํ ๋ชจ์ต
๊ฐ์ธ ํ๋ก์ ํธํ์ค ๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ ํ ์คํธ ๋ฉ์์ง ์ ๋ฆฌํด๋ดค์ต๋๋ค.
๊ทธ๋ผ ์ด๋ง ๐๐ป ๐๐ป ๐๐ป
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ Swift ] UITextField์ ์ข์ฐ ํจ๋ฉ์ ์ฃผ๋ ๋ฐฉ๋ฒ (2) | 2022.09.19 |
---|---|
[ Swift ] UIStackView์์ ์ฌ๋ฌ ๋ฒํผ์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ (0) | 2022.09.18 |
[ Swift ] Realm์์ ๋ฐฐ์ด์ฌ์ฉํ๊ธฐ ( feat.List ) (0) | 2022.06.28 |
[ Swift ] ์ ๊ท์์ ์ฌ์ฉํด๋ณด์ ( UITextField, UITextView ) (0) | 2022.06.27 |
[ Swift ] ๊ณ ์ฐจํจ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณด๊ธฐ ( Map, Filter, Reduce ) (0) | 2022.06.22 |