UIButton.Configuration
- iOS 15.0๋ถํฐ ์ด์ฉ ๊ฐ๋ฅ
- Struct ํ์
๊ธฐ๋ณธ ์ ๊ณต Configuration
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ๋ฒํผ ์คํ์ผ์ด ํ์
๋ฉ์๋ ํํ๋ก ๋ง๋ค์ด์ ธ์๋ค.
Configuration ํ์ฅ
๋งค๋ฒ configuration์ ๋ฒํผ๋ง๋ค ๋ง๋ค์ด ์ฃผ๋๊ฒ ์ฝ๋ ๋ผ์ธ๋ ๊ธธ์ด์ง๊ณ ๊ท์ฐฎ์๋๋ฐ ๋ฉํ ๋๊ป์ ๋ง์ํด์ฃผ์ extension์ผ๋ก ํ์ฅํ๋ค๋ ๊ด์ ์ด ์ข์๋ค. ํ๋ก์ ํธ ๋ด์ ๋ฒํผ ์คํ์ผ์ด ๋ช ๊ฐ์ง ์๊ฑฐ๋ ์ผ์ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค์ด์ฐ๋ ๊ฒ์ด ์ข์๋ณด์ธ๋ค. (๊ธฐ๋ณธ ์ ๊ณต ์คํ์ผ๊ณผ ๋์ผํ ์์ด๋์ด ์ธ ๊ฒ ๊ฐ๋ค.)
์งํ ์ค์ธ ํ๋ก์ ํธ ์์
์์ง ์ค์ ๋ก ์ ์ฉํ์ง๋ ์์์ง๋ง, ํ๋ก์ ํธ ๋ด์ 3๊ฐ์ง ์คํ์ผ์ ๋ฒํผ์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๊ทธ๋ฐ ๊ฒฝ์ฐ์ ์ด๊ฑฐํ(Enum)๊ณผ Configuration ํ์ฅ์ ์ด์ฉํ๋ฉด ํธํ๊ฒ ๋ฒํผ์ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค. ์ง๊ธ ๋น์ฅ์๋ foregroundColor์ backgroundColor๋ง ๋ค๋ฅด๊ฒ ์ค์ ์ ํ์ง๋ง ๋ ๋ค์ํ๊ฒ ์ปค์คํ ์ด ๊ฐ๋ฅํ ๊ฒ ๊ฐ๋ค.
@available(iOS 15.0, *)
extension UIButton.Configuration {
enum SobokButtonStyle {
case basic
case sub
case disabled
var backgroundColor: UIColor? {
switch self {
case .basic:
return UIColor(red: 24/255, green: 206/255, blue: 198/255, alpha: 1.0)
case .sub:
return UIColor(red: 228/255, green: 246/255, blue: 246/255, alpha: 1.0)
case .disabled:
return UIColor(red: 227/255, green: 232/255, blue: 235/255, alpha: 1.0)
}
}
var foregroundColor: UIColor? {
switch self {
case .basic:
return UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0)
case .sub:
return UIColor(red: 0/255, green: 171/255, blue: 182/255, alpha: 1.0)
case .disabled:
return UIColor(red: 161/255, green: 169/255, blue: 174/255, alpha: 1.0)
}
}
}
static func sobokStyle(style: SobokButtonStyle) -> UIButton.Configuration {
var configuration = UIButton.Configuration.filled()
configuration.title = "ํ์ธ"
configuration.titleAlignment = .center
configuration.baseForegroundColor = style.foregroundColor
configuration.baseBackgroundColor = style.backgroundColor
configuration.background.cornerRadius = 12
return configuration
}
}
์์ฃผ ์ฐ์ด๋ ์์ฑ
์ด๊ฒ์ ์ข ๋ ์จ๋ณด๊ณ ์ ๋ฆฌํด๋ด์ผ๊ฒ ๋ค. ์ง๊ธ ๋น์ฅ์ background.cornerRadius, foregroundColor, backgroundColor ์ ๋๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๊ฒ ๊ฐ๊ณ , ์ด๋ฏธ์ง๋ฅผ ์์ด์ธ ๋ ๋ํ ์ผํ๊ฒ inset ์กฐ์ ํ๋ ๊ฒ์ ์ข ๋ ํ๊ตฌ๊ฐ ํ์ํด๋ณด์ธ๋ค.
'๐ iOS & Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ด๋? (0) | 2022.08.20 |
---|---|
Reactive Programming์ด๋? (0) | 2022.08.20 |
[WWDC19] Introducing Combine (0) | 2022.08.10 |
[iOS] DateFormat, ์ด๊ฑฐํ์ผ๋ก ์ข ๋ ์ฝ๊ฒ ๋ค๋ฃจ๊ธฐ (8) | 2022.08.09 |
ํ์ ์ถ๋ก ๊ณผ ํ์ ์ด๋ ธํ ์ด์ ์ ์๋ ์ฐจ์ด์ ๊ดํ์ฌ(๐ง ํ์ ์ถ๋ก ์ด ๋ ๋น ๋ฅด๋ค?) (2) | 2022.08.02 |