์ฐธ๊ณ ์ฌ์ดํธ https://axiomatic-fuschia-666.notion.site/Chapter-1-Hello-TCA-70c56437681547d4b85cd1363a157356 Chapter 1. Hello, TCA ์๋
ํ์ธ์. Swift๋ก Apple ์ํ๊ณ ๊ฐ๋ฐ์ ์ผ์กฐํด ์ฃผ์๋ ๊ฐ๋ฐ์ ์ฌ๋ฌ๋ถ, ๋ชจ๋ ๋ฐ๊ฐ์ต๋๋ค! axiomatic-fuschia-666.notion.site https://www.pointfree.co/collections/tours/composable-architecture-1-0/ep243-tour-of-the-composable-architecture-1-0-the-basics Episode #243: Tour of the Composable Architecture: The Ba..
์ด์ ์ ์ด๋ ์๋น์ค์์๋ ๊ทธ๋ฌ์ง๋ง ๊ฐ์
์ ๋ฐ์์ผ ํ๋ ์๋ฅ ์ค ์๊ธฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ฒ ์๋น์ค ๋ํ ์ต๋ 5๊ฐ์ ์๋ฅ๋ฅผ ๋ฐ์์ผ ํ๊ณ , ๊ทธ ์๋ฅ๊ฐ ์ ํจํ์ง ์๊ธฐ๋ก ๊ฒ์ฆ ํ์ ๊ฐ์
์ํฌ ์ ์๋ค๊ณ ํ๋ค. ์ฒจ๋ถ ํ ์ฌ์ฉ์๊ฐ ๋ณ๋๋ก ํ์ธํ๋ ๊ฒ์ด ์๋ ์ฒจ๋ถ๋จ- ์ํ ํ์ ํ ๋์ด๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์๊ฐ ๊ฐค๋ฌ๋ฆฌ์์ ํฐ์น ํ๋ฒ ์ ๋ชป ํด์ ์ด์ํ ์ฌ์ง์ด ๋ค์ด๊ฐ๋ฉด ์ ๋ฐฉ๋ฒ์ด ์๋ค. ์ด ํ CS์์๋ ์ฌ์ฉ์์ ์ฐ๋ฝํ๊ณ ์์ ํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค. ์์ ํ VisionKit์๊ฒ ๋งก๊ธฐ๋ ๊ฒ์ ๋ฌด๋ฆฌ์ด๊ฒ ์ง๋ง, ๊ธ์๋ฅผ ์ถ์ถํด์ ์์ฌ์ค๋ฌ์ด ์๋ฅ๋ ์ผ๋ฟ ์ฐฝ ํ๋ฒ ๋์์ ์ธ์ ์์ผ์ฃผ๋ ๊ฒ๋ ๋์์ง ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. CS ํ ์
๋ฌด๋ฅผ ์กฐ๊ธ ์ค์ฌ๋ค์ผ ์ ์์ง ์์๊น?! ์ ํ์์ ์ง์ํ๋ VisionKit์ผ๋ก ํ
์คํธ๋ฅผ ์ธ์..
์๋ฌด๋ฆฌ ๋ด๋ ํญ ๋ฐ๊ฐ ๋ง๋๊ฑฐ ๊ฐ์๋ฐ ๋์์ธํ์ด ํ ๊ธ์ด๋ผ ํ๋ ์ฐ์ ํ ๊ธ์ธ๊ฑธ๋ก..!! ๋ญ 2๊ฐ๋ฉด ํ ๊ธ ๋ง์ง! ์๋ฒ๋ก ๋ถํฐ ๋ช ๊ฐ๊ฐ ์ฌ์ง ๋ชจ๋ฅด๊ณ , ํด๋น ์์ญ์ ํญํ์ ๋ ํ ๊ธ ์ ๋๋ฉ์ด์
์ด ์คํ๋์ผ ํ๋ค. Namespace๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฐ์ค๋ฌ์ด ์ ๋๋ฉ์ด์
์ ๊ตฌํํ ์ ์๋ค. ๋ฌผ๋ก animation ์ ์ฌ์ฉํด๋ ๋๋ค! ์ฒ์์ GeometryReader๋ก ์์น๋ฅผ ๊ณ์ฐ ํ ๋ค ํ๋์ View์ ์์น๋ฅผ ๋ณ๊ฒฝํด ์ฃผ์๋๋ offset๊ณผ padding ์ผ๋ก ๋ทฐ ๊ณ์ธต์ ๋ฐ๊ฟจ์ ๋ ์ด์๊ฐ ์์๋ค. GeometryReader๋ก ๊ณ์ฐ ํ ์์น๊ฐ ๋ฌ๋ผ์ ธ์ ์๋ฑํ ๊ณณ์์ ๋ฐฑ๊ทธ๋ผ์ด๋๊ฐ ์์๋๊ณ ์์ง์๋ค. struct CustomToggle: View { let priceList = ["on", "off", "test"] /// ํ ๊ธ ..
struct TipBubbleShape: Shape, InsettableShape { private var insetValue = 0.0 func inset(by amount: CGFloat) -> some InsettableShape { var bubble = self bubble.insetValue = amount return bubble } func path(in rect: CGRect) -> Path { let width = rect.width let height = rect.height let radius = rect.height / 2.0 let midpoint = radius * 0.42 let path = Path { p in p.move(to: CGPoint(x: 25, y: height..
2023.10 ๊ธฐ์ค SwiftUI์์ life cycle updates modifier๋ก ์ง์ ๋ ๊ฒ์ 4๊ฐ์ด๋ค. ์ฌ๊ธฐ์ ๋ง์ง๋ง task๋ task๋ง ๋ฐ๋ก ํ๋ฒ ํ๋ณด๊ธฐ๋ก ํ๊ณ onAppear, onDisappear, task ์์๋ด
์๋ค ๋ค ๋๋ฃจ์~ SwiftUI์์ ํ๋ฉด์ ์ ํํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค. UIKit์์ ViewController๋ฅผ ์ฌ์ฉํ์ ๋๋ ํ๋ฉด ์ ํ๋๋ View๋ฅผ ViewController๋ก ๋ช
ํํ ๊ตฌ๋ถํ ์ ์๋ ๋จ์๊ฐ ์์์ง๋ง SwiftUI ์์๋ view๋ผ๋ ๋จ์๊ฐ ๋ช
ํํ๊ฒ ๊ตฌ๋ถ๋์ด ์๊ธฐ ๋ณด๋ค๋ View๊ฐ View๋ฅผ ๊ฐ์ธ๊ณ ์๊ฑฐ๋ ๋ค๋ฅธ View์ ์ผ๋ถ๋ถ์ด ๋ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๊ณ ๋ คํด์ ์์๋ด์ผ ํ๋ค. ์ฐ์ ๊ฐ modifire์ ๊ฐ๋จํ ์ดํด๋ณด๋ฉด onAppear func o..
* advanced๊ฐ ๊ธ ์์ ๋ถ์ผ๋ฉด ์ด๋ก + ์ค์ ์์ฉ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค~ Environment์ keypath๋ฅผ ํตํด์ SwiftUI์์ ๋ฏธ๋ฆฌ ์ง์ ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค. @Environment(\.layoutDirection) var layoutDirection @Environment(\.dismiss) var dismiss ๊ฐ๊ฐ View์ ๋ฐฉํฅ, ๋ทฐ๋ฅผ dismiss ํ๊ธฐ ์ํ ๊ฐ์ Environment ํ๋กํผํฐ ๋ํผ๋ฅผ ํตํด์ ์ป์ ์ ์๋ค. ๋น์ฐํ ์ง์ ์ปค์คํ
๋ ๊ฐ๋ฅํ๋ค. Environment์ EnvironmentObject๋ ์ฌ๋ฌ View์ ๊ฑธ์ณ์ ์ฌ์ฉํ ๊ฐ์ ์ ๋ฌํ ๋ ์ฌ์ฉ๋ ์ ์๋๋ฐ ์ค๋์ ๊ทธ ์ค์์ Environment ์์๋ณด๊ธฐ! Environment Values Environmen..
predicates๋ ํ๊ตญ์ด๋ก ๋ฒ์ญํ๋ฉด ์ ์ด๋ผ๊ณ ๋ฒ์ญํ ์ ์๋๋ฐ ์ด๋ ๋
ผ๋ฆฌ์ ์ธ ์กฐ๊ฑด์์ ์๋ฏธํจ. SwiftData๋ predicates๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๊ณ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋ค. ๋
ผ๋ฆฌ์ ์กฐ๊ฑด์ ์ ์ํ ์ ์๊ณ ๊ตฌ์ฒด์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํ๋ํ ์ ์๋ค. SwiftData์ Schema๋ฅผ ์ ์ํ๊ธฐ ์ํด Model์ ๊ตฌ์ฑํ ๋ enum ์ด๋ image ํ์
์ ์ฌ์ฉํ ์๋ ์์. Relationship ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ํผ์ ์กด์ฌํ๋ ๊ฐ์ฒด๋ ์๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ทธ ๊ด๊ณ๋ฅผ ๊ธฐ์ ํ๋ ๊ฒ์ ์ค์ํ๋ค. ๋ค:๋ค ๊ด๊ณ A๋ผ๋ ๋ชจ๋ธ์ด B๋ชจ๋ธ์ ์ฌ๋ฌ๊ฐ ๊ฐ์ง๊ณ ์์ ์ ์๊ณ , B๋ผ๋ ๋ชจ๋ธ์ด A๋ผ๋ ๋ชจ๋ธ์ ์ฌ๋ฌ๊ฐ ๊ฐ์ง ์ ์์๋ ๋ค:๋ค ๊ด๊ณ๋ผ๊ณ ํ๋ค. /// ์ ์ ์ ๋ณด @Model class ..
๋ฆฌ์คํธ๋ ์๋น์ค ๋๊ณ ์๋ ์ฑ์์ ๋น ์ง์ง ์๊ณ ๋ฑ์ฅํ๋ UI ์ค ํ๋์
๋๋ค. ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ถํฐ ํ๋ฒ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋ ์ผ๋ถ๋ง ๊ฐ์ ธ์จ ๋ค ์ฌ์ฉ์๊ฐ ๊ทธ ์ผ๋ถ๋ฅผ ๋ค ๋ณด๋ฉด ์๋ก์ด ๋ชฉ๋ก์ ์๋ฒ๋ก ๋ถํฐ ๊ฐ์ง๊ณ ์ค๋ ๋ฐฉ์์ด ์๋๋ฐ ์ด๋ฅผ load more ํน์ infinite scroll ์ด๋ผ๊ณ ํฉ๋๋ค. SwiftUI์์๋ ๋ฆฌ์คํธ๋ฅผ ์ํ ์ฌ๋ฌ๊ฐ์ง View๋ค์ด ์ ๊ณต๋ฉ๋๋ค. ๊ทธ ์ค์ VStack์ ์์ดํ
๋ค์ ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ์์ต๋๋ค. ์ด VStack์ด ScrollView์ ๋ง๋๋ฉด ์ ํฌ๊ฐ UIKit์์ ๋ณด์๋ UITableView ํน์ UICollectionView์ ๋์ผํ UI๋ฅผ ๊ตฌ์ฑํ ์ ์์ด์. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ LazyVStack์ด๋ผ๋ ๊ฒ์ด ์์ต๋๋ค! ๊ฐ์ ์ด๋์ ์ฌ์ฉํ๋๊ฒ ์ข์๊น์? ์ฐจ์ด์ ๊ณผ ๊ฐ๊ฐ ๋์ํ๋ ..