SwiftUI๋ ๋ชจ๋ ์ ํ ํ๋ซํผ์์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ฒ ํด์ฃผ๋ ์๋ก์ด ๊ฐ๋ฐ ํจ๋ฌ๋ค์์ด๋ค.
์ฝ๊ฒ ๋งํด์ , ํ๋์ ๋๊ตฌ ๋ฐ API๋ก ๋ชจ๋ ์ ํ ๊ธฐ๊ธฐ ์ฌ์ฉ์์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด์ค๋ค.
์ฃผ๋ก Declarative๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ค.
SwiftUI๋ IOS 13 ์ ์ถ์์ ํจ๊ป ์ ๊ณต๋ UI ํ๋ ์์ํฌ๋ก ์ ์ธ์ ๊ตฌ๋ฌธ๊ณผ ํตํฉํ๋ซํผ์ ์งํฅํ๋ค๋ ํน์ง์ด ์์ต๋๋ค.
๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ์ฝ๋๋ ๊ฐ๋จํ๊ณ ๊น๋ํฉ๋๋ค.
UIHostingController๋ฅผ ์ฌ์ฉํ์ฌ UIKit๊ณผ ํผํฉํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ ๋ง๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌ ํ ์ ๊ด๋ฆฌ ์์ต๋๋ค. (๊ฐ๋ฐ์๋ ์ฑ์ ๋คํฌ ๋ชจ๋๋ฅผ ์ฝ๊ฒ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.)
SwiftUI๋ BindableObject, ObjectBinding ๋ฐ ์ ์ฒด Combine ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ ํ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
SwiftUI๋ ๋ ์ด์ Interface Builder๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๋ํ ํ ์ธํฐํ์ด์ค ํธ์ง๊ธฐ ์ธ Canvas๋ก ๋์ฒด๋์์ต๋๋ค. ์ฝ๋๋ฅผ ์์ฑํ ๋ Canvas์ ์๊ฐ์ ๋ถ๋ถ์ด ์๋์ผ๋ก ์์ฑ๋๊ณ ์๊ฐ์ ํํ ์์๋ฅผ ๋ง๋ค ๋ ์ฝ๋์ ์๋์ผ๋ก ๋ํ๋ฉ๋๋ค.
@IBOutlet ์ฐ๊ฒฐ์ ๋ณ์๋ก ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ์์ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ ์ด์ ์ถฉ๋ํ์ง ์์ต๋๋ค.
AutoLayout ๋๋ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋์ HStack, VStack, ZStack, ๊ทธ๋ฃน, ๋ชฉ๋ก ๋ฑ๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํฉ๋๋ค. AutoLayout๊ณผ ๋ฌ๋ฆฌ SwiftUI๋ ํญ์ ์ ํจํ ๋ ์ด์์์ ์์ฑํฉ๋๋ค. ๋ชจํธํ๊ฑฐ๋ ๋ง์กฑ์ค๋ฝ์ง ์์ ๋ ์ด์์๊ณผ ๊ฐ์ ๊ฒ์ ์์ต๋๋ค. SwiftUI๋ ์คํ ๋ฆฌ ๋ณด๋๋ฅผ ์ฝ๋๋ก ๋์ฒดํ์ฌ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ทฐ๋ฅผ ์ฝ๊ฒ ๋ง๋ค๊ณ ๊ฐ๋ฐ ํ์ด ํ ํ๋ก์ ํธ๋ฅผ ๋์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ์ถฉ๋์ ๋ฐฉ์ง ํ ์ ์์ต๋๋ค.
iOS 13 ๋ฐ Xcode 11 ์ดํ๋ง ์ง์ํ์ฌ ์ด์ ๋ฒ์ ์ iOS ์์ ์ง์ํ์ง ์์ต๋๋ค.
๊ด๋ จ ๋ฐ์ดํฐ๊ฐ ๋ง์ง ์์ต๋๋ค.
Xcode ๋ฏธ๋ฆฌ๋ณด๊ธฐ์์ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฒ์ฌ ํ ์ ์์ต๋๋ค.
UIKit ์ ๋ช ๋ นํ ํ๋ ์์ํฌ ์ด์ง๋ง SwiftUI ๋ ์ ์ธ์ ํ๋ ์์ํฌ ์ ๋๋ค.
UIKit ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์ํ๋ฅผ ์ถ์ ํด์ผ ํ์ง๋ง, SwiftUI์์๋ ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์์ ์๋์ผ๋ก ๊ฒฐํฉ๋ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์์๋ฅผ ์ถ์ ํ ํ์๊ฐ ์๋ค.
UIKit ์ ๋ทฐ๋ UIView ๋ผ๋ ํด๋์ค์ ์์์ด์ง๋ง, SwiftUI ๋ ๋ทฐ๊ฐ ํด๋์ค๊ฐ ์๋ ๊ตฌ์กฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ์์๋ ์ถ๊ฐ๊ฐ์ด ์์ต๋๋ค.
๊ธฐ์กด์ iOS ํน์ ์ ํ ํ๋ซํผ ๊ฐ๋ฐ์๋ค์ ๋๋ถ๋ถ ์คํ ๋ฆฌ๋ณด๋ ๊ฐ๋ฐ ๋ฐฉ์์ ์์งํ๊ณ ์์ ๊ฒ์ ๋๋ค. ํ์ง๋ง, ์คํ ๋ฆฌ๋ณด๋๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๊ธ๊ฒฉํ๊ฒ ์ปค์ง๊ณ , ํ์ ๋ฐ ์ ์ง ๋ณด์ํ๊ธฐ์๋ ๋งค์ฐ ๊น๋ค๋ก์์ iOS ํน์ ์ ํ ํ๋ซํผ ๊ฐ๋ฐ์๋ค ์ค์๋ ์ด๋ฌํ ์คํ ๋ฆฌ๋ณด๋ ๋ฐฉ์์ ์ ์ข์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค
์คํ ๋ฆฌ๋ณด๋์ ์ด๋ฌํ ์ปค๋ค๋ ๋จ์ ์ ์ค์ํํธUI๋ ๋๋ถ๋ถ ํด๊ฒฐํด์ค๋๋ค. SwiftUI์์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์์ ๋์์ธ ์ธํฐํ์ด์ค๊ฐ ์์ฑ๋๊ณ ๋์์ธ ์์๋ค์ด ์ฝ๋๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์, ๋ ์ด์ ์ฝ๊ธฐ ์ด๋ ค์ด ์คํ ๋ฆฌ๋ณด๋์ XML ๋ฐฉ์๊ณผ ์ธ์ฐ์ง ์์๋ ๋ฉ๋๋ค
์ค์ํํธUI๋ ์ต์ ๋ฒ์ ์ ์ด์์ฒด์ ์์๋ง ์๋ํ๊ณ , ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋, ์ด๋ฏธ ์๋ง์ ์ฑ์ด ์คํ ๋ฆฌ๋ณด๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ง์ ์คํ ๋ฆฌ๋ณด๋์ ๋นํด ์ค์ํํธUI ๊ด๋ จ ์๋ฃ๋ ํฑ์์ด ๋ถ์กฑํฉ๋๋ค