iOS, iPadOS, Mac Catalyst, tvOS, watchOS ์ฑ์ ๋ง๋ค ๋ ํ์ํ User Interface ๋๊ตฌ ํ๋ ์์ํฌ๋ค.
์ธํฐํ์ด์ค๋ฅผ ์ํ ์๋์ฐ์ ๋ทฐ ์ํคํ ์ณ, ์ฌ์ฉ์์ ์ธํ์ ์ ๋ฌํ๋ ์ด๋ฒคํธ ํธ๋ค๋ง ์ธํ๋ผ์คํธ๋ญ์ณ ๋ฑ์ ์ ๊ณตํ๋ฉฐ, ์ฌ์ฉ์์ ์์คํ , ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ์ ์ฑ! ์ฌ์ด์ ์ธํฐ๋์ ์ ๊ด๋ฆฌํ ์ ์๋๋ก ํด ์ค๋ค :)
iOS ์ฑ ์ ์์์ UIKit ํน์ SwiftUI๋ ๊ผญ ํ์ํ๋ค! ํ๋ฉด์ด ์์ด์ผ ํ๋๊น..!!
โ UIKit ๋ณด๋ฌ ๊ฐ๊ธฐ
UIViewController๋ ๋ทฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ค! UIResponder๋ฅผ ์์๋ฐ๋๋ค.
UIResponder๋ ์ด๋ฒคํธ์ ๋ฐ์ํ๊ณ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋ ์ถ์์ ์ธํฐํ์ด์ค๋ผ๊ณ ํ๋ค :)
์ฐ๋ฆฌ๊ฐ ํํ ๋ทฐ์ปจ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ ์ฝ๊ฒ ๋งํ์๋ฉด ์๋ฐ ํ๋ฉด ํ๋๋ค!ย
๊ทธ๋ฆฌ๊ณ ์ด View Controller๋ UIViewController๋ฅผ ์์๋ฐ์ ๋ง๋ค์ด์ง๊ฒ ๋๋ค :)
๊ทธ๋ฅ UIViewController๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง,
UITabBarController, UINavigationController,ย UITableViewController,ย UICollectionViewController ๋ฑ
๋ชฉ์ ์ ๋ฐ๋ผ ๋๋ ์ง๊ธฐ๋ ํ๋ค!
์คํ ๋ฆฌ๋ณด๋๋ง์ผ๋ก๋ ํ๋ฉด์ ๋ง๋ค ์ ์์ง๋ง, ๊ต์ฅํ ์ ํ์ ์ด๊ณ ์ฑ์ ๋์์ด๋ ๊ธฐ๋ฅ ๋ฑ์ ๊ตฌํํ๋ ค๋ฉด ์ฝ๋๋ก ํด์ผ ํ๋ค.
์ด ๋ ์ฐ๋ฆฌ๋ View Controller ํ์ผ์ ๋ง๋ค์ด์ ๊ตฌํ์ ํ๊ฒ ๋๋ค~!
โ UIViewController ๋ณด๋ฌ ๊ฐ๊ธฐ
ํ๋ฉด์์ ์ง์ฌ๊ฐํ ์์ญ์ ์ปจํ ํธ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด..
UIView๋ UIResponder๋ฅผ ์์๋ฐ๊ธฐ ๋๋ฌธ์ ํฐ์น ๊ฐ์ ์ฌ์ฉ์์ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃฐ ์ ์๋ค.
์์์ด๋ผ๊ตฌ....?
์ข ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ์ด ๋ณด์๋ฉด,
๋น์ด์๋ UIView๋ ๋ง๋ค ์ ์์ง๋ง, ์ด๋ฐ ํ๋ฉด์์ ๋ณด์ด๋ UIImageView, UIButton, UILabel ๋ฑ์ ๋ชจ๋ UIView๋ฅผ ์์๋ฐ๋๋ค.
์ด๊ฒ ๋ฐ๋ก ์ ๋ฐ ์์ ํ๋ ํ๋๋ฅผ ๋ทฐ๋ผ๊ณ ๋ถ๋ฅผ ์ ์๋ ์ด์ ๋ค(?)!
๋ ์๋ฅผ ๋ค์ด
UILabel๊ณผ UIButton์ ๋ ๋ค UIView๋ฅผ ์์๋ฐ๊ธฐ ๋๋ฌธ์, UIView์ layer ์์ฑ์ dotย syntax๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค!
label.layer.cornerRadius = 10
button.layer.cornerRadius = 10
ํ์ง๋ง ํ ์คํธ๋ ํ ์คํธ ์ปฌ๋ฌ์ ๊ฒฝ์ฐ,
UILabel์ UIButton์ ์์ฑ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ ๋ณ๊ฒฝํด์ผ ํ๋ค.
label.text = "๋ ์ด๋ธ"
button.setTitle("๋ฒํผ", for: .normal)
label.textColor = .red
button.setTitleColor(.red, for: .highlighted)
label.backgroundColor = UIColor.yellow
button.backgroundColor = .yellow
// backgroundColor๊ฐ UIColor๋ฅผ ์์๋ฐ๊ธฐ ๋๋ฌธ์, ์์ฒ๋ผ UIColor๋ฅผ ์๋ตํ ์๋ ์๋ค
๋ฒํผ์ ์ฌ์ฉ์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฐ์ฒด๋ค!
UIButton์ด UIView๋ฅผ ์์๋ฐ๋๋ค๊ณ ์์ ์ ์๋๋ฐ,
UIButton์ด UIControl์ ์์๋ฐ๊ณ , ๊ทธ UIControl์ด UIView๋ฅผ ์์๋ฐ๋ ํํ๋ค.
(UIView > UIControl > UIButton์ ์์๋๋ก ์์๋๋ค.)
์ ์ ์ ์ธํฐ๋์ ์ ๋ค๋ฃจ๋ ํด๋์ค๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค ๐ค
๋ฒํผ์ .setTitle์์๋,
์ด๋ ๊ฒ ๋ฒํผ์ ์ํ๊ฐ๋ ๊ฐ์ด ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค!
for state: UIControl.State๋ผ๊ณ ๋์์๋ค.
State๋ ์ปจํธ๋กค์ ํ์ฌ ์ํ๋ฅผ ๋ํ๋ด๋ ์์๊ฐ์ด๋ค.์ ์ฝ๋์์ .normal์ ๋๋ฅด์ง ์์ ์ํ๋ฅผ,
.highlighted๋ ๋ฒํผ์ ๋๋ฅธ ์ํ(์๊ฐ๋ฝ์ ๋ผ๊ธฐ ์ )๋ฅผ ์๋ฏธํ๋ค :)
๋ทฐ ๊ฐ์ฒด๋ฅผ ๋ณ์๋ก ์ง์ ํ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด @IBOutlet์ด๋ค.
IB๋ Interface Builder์ ์ฝ์๋ค.
์ฃผ๋ก UI์ ์ด์ ๋ทฐ ๊ฐ์ฒด๋ฅผ ํน์ ํ ๋ ์ฌ์ฉ๋๋ค!
์คํ ๋ฆฌ๋ณด๋์์ Assistant๋ฅผ ์ด๊ณ ,
๋ทฐ ์ปจํธ๋กค๋ฌ ์์ชฝ์ผ๋ก *์ค๋ฅธ์ชฝ ๋ง์ฐ์ค๋ก ๋๋๊ทธ* ํ๊ฑฐ๋
*control์ ๋๋ฅธ ์ํ๋ก ์ผ์ชฝ ๋ง์ฐ์ค๋ก ๋๋๊ทธ* ํ๋ฉด
@IBOutlet ๋ณ์๋ฅผ ๋ง๋ค ์ ์๋ค :)ย
(์ฃผ๋ก viewDidLoad() ์์ ๋ง๋ ๋ค)
@IBAction๋ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค ์ ์๋ค!
์ง์ ํ ๋ทฐ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ์ฌ ๋ชจ์๋ฆฌ, ํ
๋๋ฆฌ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค!
โ Add an outlet connection to send a message to a UI object
์ฌ์ฉ์์ ์ ์ค์ณ๋ฅผ ํตํด ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ฌ์ ๋ ์คํ๋ ๊ธฐ๋ฅ์ ์ ์ํ ๋ ์ฌ์ฉ๋๋ค!
@IBOutlet ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก
์คํ ๋ฆฌ๋ณด๋์์ Assistant๋ฅผ ์ด๊ณ ,
๋ทฐ ์ปจํธ๋กค๋ฌ ์์ชฝ์ผ๋ก *์ค๋ฅธ์ชฝ ๋ง์ฐ์ค๋ก ๋๋๊ทธ* ํ๊ฑฐ๋
*control์ ๋๋ฅธ ์ํ๋ก ์ผ์ชฝ ๋ง์ฐ์ค๋ก ๋๋๊ทธ* ํ๋ฉด
@IBAction ๋ณ์๋ฅผ ๋ง๋ค ์ ์๋ค!
UIButton, UISwitch ๋ฑ UIControl์ ์์๋ฐ๋ ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค :)