Skip to content

SwiftUI

dochoi edited this page Nov 29, 2020 · 23 revisions

ToDo

  • ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€
  • AutoLayout์„ ๋ฌด์—‡์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€
    • ๋‚ด๋ถ€๋Š” AutoLayout์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์ง€๋งŒ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋ฅผ ๋‹ค๋ฃฐ ํ•„์š”๋Š” ์—†๋‹ค -> ์กฐ๊ธˆ ๋” ์•Œ์•„๋ณด์ž
  • StoryBoard์™€ ๋น„๊ตํ•˜์—ฌ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์–ด์•ผํ•˜๋Š”๊ฐ€
    • ContentView๊ฐ€ VC๋ฅผ ๋Œ€์ฒดํ•˜์—ฌ, MVC -> MVํŒจํ„ด์œผ๋กœ ๋ณ€ํ™”, ํ…Œ์ŠคํŠธ์ฝ”๋“œ ์–ด๋–ป๊ฒŒ ํ• ์ง€ ์ƒ๊ฐ
  • ํ•œ ์Šคํฌ๋กค๋ทฐ์•ˆ์— ์—ฌ๋Ÿฌ์œ ํ˜•์˜ ๋ ˆ์ด์•„์›ƒ์ด ์žˆ์„ ๋•Œ UIKit์˜ CompositionalLayout์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€
    • ํ•ดํ‚น์Šค์œ„ํ”„ํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด SwiftUI 2.0๋ถ€ํ„ฐ๋Š” CollectionView๋ฅผ ๋Œ€์ฒดํ•  Grid ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ๋‚˜์™”์ง€๋งŒ ์•„์ง CompositionalLayout๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์—†๋‹ค -> Grid๋ฅผ ์กฐํ•ฉ vs UIKit์„ ๊ฐ™์ด ์“ฐ๋Š”๊ฑฐ๋„ ๊ณ ๋ ค
  • ๋ทฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์–ด๋–ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€
  • ๋ฐฐํฌํ• ๋•Œ๋Š” preview ์ฝ”๋“œ๋ฅผ ์ง€์›Œ์•ผ ํ•˜๋Š”๊ฐ€
    • ๋ฆด๋ฆฌ์ฆˆ ๋ชจ๋“œ์—์„œ๋Š” ์ž๋™์œผ๋กœ ํ”„๋ฆฌ๋ทฐ ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ๋ฌด์‹œ๋œ๋‹ค๊ณ  ํ•จ
  • ์ˆœ์ˆ˜ SwiftUI๋กœ ๋ชจ๋“  ๋ทฐ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„  ํƒ€๊ฒŸ์ด iOS 14.0์ด์ƒ์œผ๋กœ ํ•ด์•ผํ•จ
  • some์€ ๋ฌด์—‡์ธ๊ฐ€? Opaque Type์ด๋‹ค. reverse generic Type๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ์šฐ๋ฉฐ, ํ˜ธ์ถœ๋œ ์ฝ”๋“œ๊ฐ€ ํ˜ธ์ถœํ•œ ์ฝ”๋“œ์˜ ํƒ€์ž…์„ ๊ฒฐ์ •, ์ž์„ธํ•œ ํƒ€์ž…๊ณผ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ €์—๊ฒŒ ์ˆจ๊ธฐ๊ณ , ํŠน์ • ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋Š” API์ธ๊ฑธ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์„๋•Œ ์‚ฌ์šฉ, ๋ฐ˜ํ™˜๊ฐ’์€ ๋ฌด์กฐ๊ฑด ๊ตฌ์ฒด ํƒ€์ž…์ž„์„ ๊ฐ•์ œํ•จ. ๋™์ผ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๋ชจ๋“  ํ˜ธ์ถœ์ด ๊ฐ™์€ ํƒ€์ž… ๋ฐ˜ํ™˜์„ ๋ณด์žฅํ•จ. https://medium.com/@PhiJay/whats-this-some-in-swiftui-34e2c126d4c4

Tools

  • @State
    • ์†Œ์œ 
    • ํ•ด๋‹น ๋ทฐ๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐœ๋…์„ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋Œ€๋ถ€๋ถ„ private ๋ช…์‹œ
    • Binding ํƒ€์ž…์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌ ํ•˜๊ธฐ ์œ„ํ•ด์„œ $๋ฅผ ๋ถ™์ธ๋‹ค.
    • ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๊ฐ์ง€๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ทฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค.
  • @Binding
    • ์ฐธ์กฐ
  • ObservableObject, @ObservedObject
    • ๋ทฐ๊ฐ€ ๋ชจ๋ธ์—๊ฒŒ ์˜์กด์„ฑ์„ ๊ฐ€์ง„๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹œ, ์–ด๋–ค ๊ฐ’์ด ๋ณ€ํ™”๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋ทฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š”์ง€๋„ ์•Œ๋ ค์ค˜์•ผํ•จ
  • @Published
    • ๋ทฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š” ๊ฐ’์—๋Œ€ํ•ด ๋ช…์‹œ
    • objectWillChange๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹œ์ ์„ ์ปค์Šคํ…€ํ• ์ˆ˜์žˆ์Œ
  • @EnvironmentObject
    • ๊ฐ„์ ‘์ ์ธ ์˜์กด์„ฑ์„ ๋งŒ๋“ ๋‹ค. Binding์œผ๋กœ ๋งค๋ฒˆ ์ž์‹๋ทฐ์—๊ฒŒ ๋™์ผ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ฃผ๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ™˜๊ฒฝ ์š”์†Œ๋กœ ๋“ฑ๋กํ•˜์—ฌ ์ž์‹๋ทฐ๋ผ๋ฉด ๋ชจ๋‘ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋ฐ์ดํ„ฐ ํ๋ฆ„์ด UIKit๊ณผ ๋งŽ์ด ๋‹ค๋ฅด์ง€๋งŒ,์ž˜ ์ดํ•ดํ•˜๋ฉด ํ›จ์”ฌ ํšจ์œจ์ ์ด๊ณ  ๊ฐ„ํŽธํ•จ

propertyWrapper๋ฅผ ์ดํ•ดํ•ด์•ผ SwiftUI's state๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. (projectedValue, ๋ฐ”์ธ๋”ฉ์‹œ $๊ธฐํ˜ธ๊ฐ€ ๋ถ™๋Š” ์ด์œ )

  • @State๋ฅผ ๋ช…์‹œํ•˜๋ฉด 3๊ฐ€์ง€ value๊ฐ€ ์ƒ๊ธด๋‹ค.
Clone this wiki locally