์ด๋ฒ์ ์ฃผ์ ๋ ํด๋์ค๋ฅผ ์ข ๋ ์์จ๋ณด๊ธฐ ์ํ ๊ธ์ด๋ค๋์์ธ์ ์์์์ class๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด๋ณด์
์ง๊ธํ๋ ํ๋ก์ ํธ๋ ๊ทธ๋ ๊ณ ์ด๋์๋ ๋์์ด๋๋ ์๋ค. ๊ฐ์ธ ํ๋ก์ ํธ๋ ๋ณธ์ธ์ด ๋์์ด๋์ธ๊ฒ์ด๋ค. ๋ฌผ๋ก ํ๋ฆฌํฐ ์ฐจ์ด๋ ์ด๋ง์ด๋งํ๋ค.
๊ทธ๋ฐ๋ฐ ๋์์ด๋๊ฑด ๊ฐ์ธํ๋ก์ ํธ๊ฑด ์ฌ์ฉํ๋ ๊ฒ์ค์ ๋ฐ๋ณต ๋๋ ์์๋ ์๊ธฐ๋ง๋ จ์ด๋ค. ์๋ฅผ ๋ค์๋ฉด ์ ์ฅ
๊ฐ์ ๋ฒํผ? ํต์ผ์ฑ๋ ์์ ๋ฟ๋๋ฌ ์๊ฐ ์ ์ฝ๋ ๋๋ ๊ฒ ๊ฐ๋ค.
์ด๋ฒ์๋ ์ด์ ๊ธ๊ณผ ๊ฐ์ด ์!! ์ด๋ ๊ฒ ์ฐ๋ฉด ์ข๊ฒ ๋ค! ํ๋ ๊ฒฝ์ฐ์ด๋ค
์ด์ ๊ธ: Class, Struct ๊ฐ ์ ๋ฌ ๋ฐฉ์์ด ๋ค๋ฅธ๊ฑด ์์ง๋ง ์ธ์ ์ฐ์ง?
๋ค๋ฃจ๊ฒ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค
- Class ์์ด ๊ตฌํ
- Class ์ฌ์ฉํ์ฌ ๊ตฌํ
- Class์ ์์ ์ด์ฉ
์ค๋์ Play Grounds ๋ง๊ณ Xcode๊ฐ ์ฌ์ฉ๋๋ค.
์ฐ์ ํ๋ฉด์ ๋ณด์, (์ผ์ชฝ๋ถํฐ)
- ๋ค๋น๊ฒ์ด์ ๋ฐ
- ๋ฉ์ธ ํ๋ฉด - ๋ฒํผ ์ ํ -> ์ ๋ ฅํ๋ฉด์ผ๋ก ์ด๋
- ์ ๋ ฅ ํ๋ฉด - ํ ์คํธ ํ๋ ์ ๋ ฅ ํ ์ ์ฅ -> ๋ฉ์ธ์ผ๋ก ์ด๋
๊ตฌ์ฑ์ ์ค๋๋ ์ฌํํ๋ค.
์ฌ๋ด์ผ๋ก Xcode๊ฐ ๋คํฌ๋ชจ๋์ธ๊ฒ์ WWDC 2018์์ ๋ฐํํ ์๋ก์ด macOS์ธ Mojave์์ ์ง์ํ๋ ๋คํฌ๋ชจ๋์ด๋ค! ๋คํฌ๋ชจ๋ ๋ฐํ๋ ๊ฐ๋ฐ์๋ค ํํธ์ฑ์ด ์ ์ผ ํฌ๊ฒ ๋ค๋ ธ๋ ๊ฒ ๊ฐ๋ค. ํ์ฌ ๋ฒ ํ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์ฌ๊ธฐ์ ์ถ๊ฐ์ ์ผ๋ก Xcode beta 10๋ฒ์ ์์ ์ค๋ธ์ ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์น๊ฐ ๋ฐ๋์๋ค!
(Xcode9) ๊ธฐ์กด์ ์์น๋ ์ ์ฌ์ง ์ฒ๋ผ ๋นจ๊ฐ์ ์์ญ์ด ์ค๋ธ์ ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ค.
๋ฐ๋ ์์น๋ฅผ ๋ณด์ (Xcode10 ๋ฒ ํ) ๋ค์๊ณผ ๊ฐ๋ค. ๊ธฐ์กด์ ์์ญ์ ๋น์ด์๊ณ . ์ ๋ ๊ฒ ์๋ก์ด ์ฐฝ์ผ๋ก ์์ญ์ด ๋ฐ๋์๋ค.
(๋จ์ถํค : Shift - option - L
)
(* bear ๊ธ์ฐ๊ธฐ ํ๋ก๊ทธ๋จ์ Xcode 10 ๋ฒ ํ ์ฝ๋ ๋ณต๋ถํ๋ฉด ์ด์ํด์ ๋ค์ 9๋ก ์ฌ์ฉ .. ใ
ใ
)
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์๊ฐ์
์ฃผ๋ชฉํด์ผํ ๋ถ๋ถ์ ์ ์ฅ
๋ฒํผ์ด๋ค.
๊ธฐํ์: TextField๊ฐ ๊ธ์ ์๋์ง ์๋์ง์ ๋ฐ๋ผ,
์ ์ฅ ๋ฒํผ ๋นํ์ฑํ/ํ์ฑํ๋ก ํด์ฃผ์ธ์.
์ด๋ฐ ๊ฒฝ์ฐ๋ ๋ง๊ณ ๋ง์ ์ฑ๋ค์์๋ ๋ณด์ธ๋ค.
์ฌ๊ธฐ์ ์ถ๊ฐ ์กฐ๊ฑด
๋์์ด๋: ๋นํ์ฑํ ์์ ํ์, ํ์ฑํ ์์ ๊ธฐ๋ณธ ํ๋์์ด์
๋์์ด๋์ ์๊ตฌ์ฌํญ์ด๋ผ ๊ฐ์ ํ์.
๊ทธ๋ผ ์์ฝํ์๋ฉด
- ๊ธ์ ์ ๋ ฅ๋จ - ๊ธฐ๋ณธ์, ํ์ฑํ
- ๊ธ์ ์ ๋ ฅ ์๋จ - ํ์, ๋นํ์ฑํ
(๊ธฐ๋ณธ ํ๋ฉด)
1. Class ์์ด ๊ตฌํ
์ด๋์ ๋๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๋ถํฐ ๋ณด๋ฉด,
- ํ๋ฉด ์ง์ ์, ๋นํ์ฑํ ์ํ - viewDidLoad()
- ๊ธ์ ์ ๋ ฅ์ - (TextField์ Editing Changed ์ฌ์ฉ)
1์ ์ฝ๋๋ก ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค
@IBOutlet var btnSave:
override func viewDidLoad() {
super.viewDidLoad()
*// 1. ๋ฐ์ ์๊ฒ ๋นํ์ฑํ*
btnSave.isUserInteractionEnabled = false
*// 2. ํ์์ผ๋ก ๋ณ๊ฒฝ*
btnSave.setTitleColor(.gray, for: .normal)
}
์์ฃผ ์์ฃผ ๊ฐ๋จํ๋ค. ๊ทธ๋ผ ๋ฐ๋ก ์ด์ด์ 2๋ฒ์งธ ์กฐ๊ฑด
Conection Inspector ์์
์ฐ๊ฒฐ์ ๋จผ์ ํ๊ณ
์ฝ๋
@IBAction func editChanged(_ sender: UITextField) {
// ์กฐ๊ฑด: ๊ธ์๊ฐ ๋น์ด์๋๊ฐ??
if sender.text?.isEmpty == true {
// ๊ธ์
// 1. ๋ฐ์ ์๊ฒ ๋นํ์ฑํ
btnSave.isUserInteractionEnabled = false
// 2. ํ์์ผ๋ก ๋ณ๊ฒฝ
btnSave.setTitleColor(.gray, for: .normal)
} else {
// ๊ธ์ o
// 1. ํ์ฑํ
btnSave.isUserInteractionEnabled = true
// 2. ๊ธฐ๋ณธ ์์ผ๋ก ๋ณ๊ฒฝ
btnSave.setTitleColor(**self**.view.tintColor, for: .normal)
}
์ด๊ฒ๋ ์์ฃผ ๊ฐ๋จํ๋ค.
๊ทธ๋ ์ง๋ง ๊ฐ์ ์ฝ๋๊ฐ ๊ณ์ ๋ฐ๋ณต ๋๋ค.
๋ง์์ ์๋๋ ํจ์๋ก ๋นผ์ฃผ์.
ํจ์ฌ ๊น๋ํ๋ค.
์์งํ ์ด๋ ๊ฒ๋ง ๋๋ด๋ฉด Class๊ฐ ์ํ์ํด? ๋ผ๊ณ ํ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์์ ํ์ฑ,๋นํ์ฑํ๋ฅผ ํจ์๋ก ๋ง๋ ์ด์ ๋ฅผ ๋ค์ ์๊ฐํด๋ณด์.
- ๊ฐ์ ์ฝ๋๊ฐ ๋ฐ๋ณต๋๋ค
- ์ ๋ฆฌ ์ํ๋ฉด ์ฝ๋๊ฐ ์ง์ ๋ถํด ๋ณด์ธ๋ค.
- ๋ง์ฝ 1๊ฐ๋ผ๋ ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ๋ถ๋ถ์ ์ฐพ์ ๋ฐ๊ฟ์ผํ๋ค
์ฌ๊ธฐ์ ์์งํ๊ฒ 2๋ฒ์งธ ๋ถ๋ถ์ ๋ญ ๊ทธ๋ฌ๋ ค๋ ํ ์์๋ค. ๊ทธ์น๋ง 1,3๋ฒ ๋ฌธ์ ๊ฐ ์ ๋ง ํฌ๋ค 1๋ฒ ๋๋ฌธ์ 3๋ฒ์ด ๋ฐ์ํ๋ ๊ฒ์ธ๋ฐ, ์ง๊ธ์ด ํ๋ฉด์ด 1๊ฐ๋ผ ๊ทธ๋ ์ง ๋ง๋ค๊ณ ํ๋ฉด ๋์ฐํ๋ค
ํ๋ฉด์ด 1๊ฐ๊ฐ ์๋๋ผ๋ฉด?
๋ง์ฝ์ ์ ๋ ฅํด์ผํ ํ๋ฉด์ด 1๊ฐ๊ฐ ์๋๊ณ
- ์ด๋ฆ ์ ๋ ฅ
- ์ด๋ฉ์ผ ์ ๋ ฅ
- ์ ํ๋ฒํธ ์ ๋ ฅ
์์ฒ๋ผ ์ ๋ ฅ ํ๋ฉด์ด ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ?
๊ฐ UIVIewController ํด๋์ค ๋ง๋ค ํจ์๋ฅผ ๋ง๋ค๊ฒ์ธ๊ฐ?? ๊ทธ๋ผ ๋ค์ ๋๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- ๊ฐ์ ์ฝ๋๊ฐ ๋ฐ๋ณต๋๋ค
- ์ ๋ฆฌ ์ํ๋ฉด ์ฝ๋๊ฐ ์ง์ ๋ถํด ๋ณด์ธ๋ค.
- ๋ง์ฝ 1๊ฐ๋ผ๋ ๋ณ๊ฒฝํ๋ฉด ๋ชจ๋ ๋ถ๋ถ์ ์ฐพ์ ๋ฐ๊ฟ์ผํ๋ค
๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํ ๊น? ๋ฐฉ๋ฒ์ 2๊ฐ์ง ์ ๋ ์๊ฐ์ด ๋๋ค
- Util ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ๊ทธ์์ ํจ์๋ฅผ ๋ง๋ค๊ณ ๊ณตํต์ ์ผ๋ก ํธ์ถํ๋ค. (๊ด๋ฆฌํ๊ธฐ ํธํ๊ฒ Util์ ๋ชจ์)
- UIButton์ ์์ํ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค.
๋์ ๋น์ทํ๋ค. ์ฐจ์ด๊ฐ ์๋ค๋ฉด ๊ธฐ๋ฅ์ ๊ฐ์ง๋ง ์ฝ๊ฐ์ ์ฐจ์ด์ ์ด ์๋ ๋ฒํผ ์ ๋ง๋ค์ด์ผํ๋ค๋ฉด ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค.
์๋ฅผ ๋ค์ด ์๋ ์ฌ์ง์ ๋ณด์ ์๋ก์ด ๋ฒํผ์ด ์๊ฒผ๋ค. ์ ์ฅ ํ ๋ฉ์ธ์ผ๋ก ๋์๊ฐ๋ ๋ฒํผ์ด๋ค. ๊ธฐ๋ฅ์ ๋์ผํ๋ค๊ณ ํ์๋ ์ฐจ์ด์ ์ด ์๋ค.
- ๋ฐฐ๊ฒฝ์
- cornerRadius๊ฐ ์๋ค.
๊ธฐ์กด ๋ฌธ์ ์๋ ๋ฐ๋์์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ? ์๋ ๋ค๋ฅธ ๋ฌธ์ ๋ค. ์๋๋ฉด ํจ์ ๋ด์๊ฒ์ ๋ฐ๊พธ๋ฉด ๋ชจ๋ ๋ฐ๋์ง๋ง ์ด๊ฑด ์ฑ๊ฒฉ์ด ์ข ๋ค๋ฅธ์ ๊ฐ ์๊ธด๊ฑฐ๋๊น,
๋ฌผ๋ก ์ธ์๋ฅผ ๋ฐ์์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ ํ ์๋ ์๋ค! ๊ทธ๋ ์ง๋ง ํด๋์ค์ ์์์ ์ด์ฉํ๋ค๋ฉด ๋ ํธํ๊ฒ ํ ์ ์๋ค.
Class ์ฌ์ฉํ์ฌ ๊ตฌํ
์ฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๋ฒํผ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด์
class DefaultBtn: UIButton {
// 1. ์คํ ๋ฆฌ๋ณด๋๋ก ๋ฒํผ ๊ตฌํ์
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
// 2. ์ฝ๋๋ก ๋ฒํผ์ ๊ตฌํ์
override init(frame: CGRect) {
super.init(frame: frame)
}
}
UIButton
์ ์์ ๋ฐ์ ํด๋์ค์ด๋ค. 2๊ฐ์ง ์ด๊ธฐํ ๊ตฌ๋ฌธ์ด ์๋ค. ์์ ์ฃผ์์ ๋ฌ์ ๋์๋ฏ์ด
1์ ์คํ ๋ฆฌ๋ณด๋์์ ๋ฒํผ์ ์ถ๊ฐํ ๊ฒฝ์ฐ ์ฌ์ฉ๋ init ๊ตฌ๋ฌธ
2๋ ์ฝ๋๋ก ๊ตฌํํ ์ ์ฌ์ฉ
1์ ์ด์ฉํด์๋ ์ฝ๋๋ก ์งค์๋ ์์ง๋ง ํด๋น๋ถ๋ถ์ ์์ง ํ์๋ ์๋ชจ๋ฅด๋ ์์ญ
์ฐ๋ฆฌ๊ฐ ์ด์ฉํ ์ํ๋ฅผ enum์ ์ด์ฉํด์ ํํํด๋ณด์
class DefaultBtn: UIButton {
// ๋ฒํผ ์ํ ์ข
๋ฅ
enum btnState {
case On
case Off
}
// ๊ธฐ๋ณธ ๊ฐ = off ์ํ
var isOn: btnState = .Off
// on ์ปฌ๋ฌ
var onTintColor: UIColor = UIColor(red: 0, green: 122/255, blue: 1/255, alpha: 1)
// off ์ปฌ๋ฌ
var offTintColor: UIColor = .gray
// ----------- ๊ธฐ์กด ์ฝ๋
}
๊ธฐ์กด ํด๋์ค์์ ์ถ๊ฐ๋์๋ค. enum์ ์์ฆ ์์ฃผ ์ด์ฉํ๋๋ฐ, ๋ฑ ํ์ํ ์ผ์ด์ค๋ค๋ง ๋์ดํ์ฌ, ๋ค๋ฅธ ๊ฐ์ ๋ฐฉ์งํ ์ ์์ผ๋ฉฐ, switch๋ฌธ๊ณผ ๊ฐ์ด ์ฐ๋ฉด ๊ต์ฅํ ์ข๋ค. ์ถ๊ฐ์ ์ผ๋ก ์ปฌ๋ฌ๊ฐ๋ ์ง์ ํด๋์๋ค.
๊ทธ๋ผ ์ด์ ์ ํ ์ ํด๋ณด์
class DefaultBtn: UIButton {
// ๋ฒํผ ์ํ ์ข
๋ฅ
enum btnState {
case On
case Off
}
// ๊ธฐ๋ณธ ๊ฐ = off ์ํ
var isOn: btnState = .Off {
didSet {
setting()
}
}
//.. ์ปฌ๋ฌ๋ณ์ ์๋ต
// 1. ์คํ ๋ฆฌ๋ณด๋๋ก ๋ฒํผ ๊ตฌํ์
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// ๊ธฐ๋ณธ ์
ํ
setting()
}
// 2. ์ฝ๋๋ก ๋ฒํผ์ ๊ตฌํ์
override init(frame: CGRect) {
super.init(frame: frame)
// ๊ธฐ๋ณธ ์
ํ
setting()
}
func setting() {
// on ์ปฌ๋ฌ (๊ธฐ๋ณธ์)
switch isOn {
case .On:
self.setTitleColor(onTintColor, for: .normal)
self.isUserInteractionEnabled = true
case .Off:
self.setTitleColor(offTintColor, for: .normal)
self.isUserInteractionEnabled = false
}
}
}
์ฐจ์ด์ ์ ์ธ๊ฐ์ง๊ฐ ์๋ค
- setting() ํจ์๊ฐ ์๊ธด๊ฒ
- setting ํจ์๊ฐ init๊ตฌ๋ฌธ์ ์ ์ฉ๋๊ฒ
- isOn ๋ณ์์ didSet์ ์ถ๊ฐ
์ค๋ช ์ด ํ์ํ๊ฑด 3๋ฒ๋ง ์ค๋ช ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค, 3๋ฒ didSet์ ๊ฒฝ์ฐ ํด๋น ๋ณ์๊ธฐ ์ด๊ธฐํ ๋์์๋, ํธ์ถ๋๋ ๋ด์ฉ์ด๋ค. ์ด๊ฒ๋ ์ ํ์ฉํ๋ฉด ์ฅ์ ์ด ๋ง๋ค.
๋ญ๊ฐ ๋ณด๊ธฐ์ ๋ญ์ผ? ์คํ๋ ค ๋ ํ๋ ๋ฐ? ํ ์ ์๋ค, ๊ทธ๋ ์ง๋ง ์ฒ์์ ์ ํ ๋ง ์ด๋ ต์ง ์ฌ์ฉ์ ์์ฃผ ๊ฐ๋จํ๋ค.
์ฐ์ ๋ฒํผ์ ํด๋์ค๋ฅผ ๋ฃ์ด์ฃผ๊ณ IBOutlet๋ ๋ณ๊ฒฝ
//@IBOutlet var btnSave: UIButton!
@IBOutlet var btnSave: AnotherBUtton!
๊ทธ๋ผ ์ด์ ์ฌ์ฉํด๋ณด์
class AddNameViewController: UIViewController {
@IBOutlet var btnSave: DefaultBtn!
override func viewDidLoad() {
super.viewDidLoad()
// ๋ฒํผ ๋นํ์ฑํ
btnSave.isOn = .Off
}
@IBAction func editChanged(_ sender: UITextField) {
// ์กฐ๊ฑด: ๊ธ์๊ฐ ๋น์ด์๋๊ฐ??
if sender.text?.isEmpty == true {
// ๋ฒํผ ๋นํ์ฑํ
btnSave.isOn = .Off
} else {
// ๋ฒํผ ํ์ฑํ
btnSave.isOn = .On
}
}
}
์ฌํ์ ๋์ด๋ค. ๋ง์์ ํํ๊ฐ ์ฐพ์์จ๋คโฆ.
๋ฌผ๋ก ์ ์ญ ํจ์๋กํด๋ ํ์ค๋ก ํ๋ฉด ๋์ด๊ธด ํ์ง๋ง ์์ ๋งํ๋ฏ์ด ์ฐจ์ด์ ์ด ์๋ค. ๊ทธ๋ฆฌ๊ณ enum์ ์จ์ ๊ฐ๋ ์ฑ๋ ํจ์ฌ ์ข๋ค. ์ฌ์ฉ์ฑ๋ ์ข๋ค, ์๋ ์ฌ์ง์ฒ๋ผ .์ ๋๋ฅด๋ฉด ์์์ ๋์ค๋๊น ๋ค๋ฅธ๊ณณ์์๋ ์ ์ ํ ์ ์ฌ์ฉํ์.
๊ทธ๋ ๋ด ์๊น ๋ฌธ์ ๊ฐ ๋์๋ ํ์ฑ/ ๋นํ์ฑ์ ๊ฐ์ผ๋ ํน์ฑ์ด ๋ค๋ฅธ๊ฒ์ ์ด๋ป๊ฒ ๊ตฌํ์ ํ ๊น?
Class ์์์ ์ฌ์ฉํ์ฌ ๊ตฌํ
์๊น ๋ง๋ค์ด๋ ํด๋์ค๋ฅผ ์์ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ override๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ๊ฒฐ๋ก ์ด๋ค.
๋ง์ฝ ์ ์ญ ํจ์๋ Util ํด๋์ค๋ฅผ ์์ฑํด์ ๊ฑฐ๊ธฐ๋ค๊ฐ ํจ์๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ค๋ฉด
- ์ค๋ฒ๋ก๋๋ฅผ ์ด์ฉํด์ ๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ ๋ค
- ์ธ์๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋๊ฒ ํ๋ค ๋ผ๋๊ฐ, ๋ญ ๋ฐฉ์์ ์๋ค. ๊ทธ๋ ์ง๋ง ๊ฐ๋ ์ฑ๋ ์์ข๋ค!
๋ฐฐ๊ฒฝ์๊ณผ cornerRadius์ด ์ฒจ๊ฐ๋ ํ์ฑ/๋นํ์ฑ ๋ฒํผ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋ณด์
class BtnWithBackGroundColor: DefaultBtn {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// ์๋ก์ด ์กฐ๊ฑด
addSomeThing()
}
override init(frame: CGRect) {
super.init(frame: frame)
// ์๋ก์ด ์กฐ๊ฑด
addSomeThing()
}
func addSomeThing() {
self.backgroundColor = .green
self.layer.cornerRadius = 5
}
}
์ฒ์์ ๋ง๋ ํด๋์ค๋ณด๋ค ๊ต์ฅํ ๊ฐ๋จํ๋ค. ๋ด๊ฐ ์๋ก ํ์ํ๊ฒ๋ง override ํด์ฃผ๊ณ ๊ธฐ์กด๊ฒ์ ๊ทธ๋๋ก ๊ฐ์ ธ๋ค ์ด๋ค.
์ฌ์ฉ๋ฒ์? ๊ฐ๋ค
class AddNameViewController: UIViewController {
@IBOutlet var btnSave: DefaultBtn!
@IBOutlet var btnSave2: BtnWithBackGroundColor!
override func viewDidLoad() {
super.viewDidLoad()
// ๋ฒํผ ๋นํ์ฑํ
btnSave.isOn = .Off
}
@IBAction func editChanged(_ sender: UITextField) {
// ๊ธฐ์กด ์๋ต..
// ๋ฐฐ๊ฒฝ์ ์๋ ๋ฒํผ
if sender.text?.isEmpty == true {
btnSave2.isOn = .Off
} else {
btnSave2.isOn = .On
}
}
}
์คํ ์ฌ์ง์? ์๋์จ๋ค
๋์์ด๋: ์ ์ฅํ ๋ฉ์ธ ๊ฐ๋ ๋ฒํผ ๊ธ์ ํฌ๊ธฐ๋ ๋ณผ๋17๋ก, ๊ธ์์์ ๋นํ์ฑ:ํฐ์, ํ์ฑ: ๋นจ๊ฐ์์ผ๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์
์ด๋ด ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํ๋ฉด ๋๋๊ฐ!
BtnWithBackGroundColor
ํด๋์ค์ addSomeThing()
๋ง ์๋ณด๋ฉด ๋๋ค
func addSomeThing() {
self.backgroundColor = .green
self.layer.cornerRadius = 5
// ์ถ๊ฐ ์์ฒญ
self.titleLabel?.font = UIFont.boldSystemFont(ofSize: 17) // ํฐํธ ๋ณผ๋ ๋ฐ ์ฌ์ด์ฆ 17
self.offTintColor = .white // off ์ปฌ๋ฌ ํฐ์
self.onTintColor = .red // on ์ปฌ๋ฌ ๋ ๋
self.setting() // ๋ฐ๋๊ฒ์ผ๋ก ์
ํ
!
}
์ ๋ ๊ฒ๋ง ์ถ๊ฐํด์ฃผ๋ฉด ์๋ ์ฌ์ง์ฒ๋ผ ๋ฐ๋๊ฒ ๋์ค๊ฒ ๋๋ค! ์ ๊ธฐ๋ง ์๋ณด๊ณ ์ฌ๋ฌ๊ณณ์ ๋ฒํผ๋ค์ ํ๊บผ๋ฒ์ ์์ ์ด ๋๋ค๋ ๋๋ฌด์ข๋ค.
๋ค๋ง ์ดํด ์๋ ์์ง๊ฐ ์๋๊ฑด self.setting()
์ธ๋ฐ, ์ ๊ฒ์ ์ํด์ฃผ๋ฉด ์ปฌ๋ฌ๊ฐ์ด ์๋ณํ๋ค. ์ ๋ณ์๋ค์ setting()์์ ์ฌ์ฉ์ด ๋๋๋ฐ, init ๊ตฌ๋ฌธ์์ ๋ถ๋ชจํด๋์ค๊ฐ ์ฌ์ฉ์ ํ๊ณ ๋ฐ๋ ๊ฐ์ผ๋ก ์ฌ์ฉ์ด ์๋์๊ธฐ ๋๋ฌธ์ด๋ค!
๋ง์ฝ ์ฌ๋ฌ๊ฐ์ง ๋ณตํฉ ์ ์ผ๋ก ์ถ๊ฐํ ๊ฒฝ์ฐ์๋ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ง๋ง ๋ง๋ค๊ธฐ ํธํจ๊ณผ ์ ์ง๋ณด์ ๋ฉด์์๋ ๊ต์ฅํ ํธ๋ฆฌํ๊ฒ ์งํํ ์ ์๋ค.
์ด๋ ๊ฒ ํด๋๋ฉด, ์์ฒญ์ผ๋ก ์ธํด์ ๋ณ๊ฒฝํ ๋๋ ํ๊บผ๋ฒ์ ๋ณ๊ฒฝ ๋ฐ ์์ ์ด ๊ฐ๋ฅํ๋ ํ์ํ๊ณณ์ ์์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค!
์ ๋ง ์ฌํํ ์์ ๋ก ์์์ ํ์๊ณ , ์์ง ๋ณต์กํ ๊ณณ์ ๋ง์ด ์ด์ฉ์ํด๋ดค์ง๋ง ์ข๋ ์ธ๊ณณ์ ์ฐพ์๋ด์ผ๊ฒ ๋ค.