๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽ iOS/SwiftUI4

[SwiftUI] GeometryReader๋ž€? (feat. GeometryProxy,CoordinateSpace) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ SwitUI๋ฅผ ์ด์šฉํ•ด์„œ Layout์„ ์žก์„ ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” GeometryReader์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ GeometryReader๋ž€? ์ด๋ฆ„์„ ์ง์—ญํ•˜๋ฉด Geometry๋Š” ๊ธฐํ•˜ํ•™์„ ๋‚˜ํƒ€๋‚ด๋‹ˆ๊น, ๊ธฐํ•˜ํ•™์ ์ธ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ๊ณต์‹ ๋ฌธ์„œ์—๋„ ์ด๋ฆ„์„ ์ง์—ญํ•œ ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๊ฒŒ "์ปจํ…์ธ ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ํ•จ์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ์ปจํ…Œ์ด๋„ˆ ๋ทฐ์•ผ!" ๋ผ๊ณ  ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. GeometryReader๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ปจํ…์ธ ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ GeometryProxy๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค. GeometryProxy๋ž€? ๊ทธ๋ ‡๋‹ค๋ฉด GeometryProxy๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ์šฐ์„  Proxy์˜ ๋œป์€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋Œ€์‹  ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. .. 2022. 4. 4.
[SwiftUI] ์ž์—ฐ์Šค๋Ÿฌ์šด ํ™”๋ฉด์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„ํ•˜๊ธฐ (feat. matchedGeometryEffect,Namespace) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ํ‰์†Œ์— AppStore๋ฅผ ๋ณด๋ฉด ํ™”๋ฉด ๊ฐ„ ์ „ํ™˜ํ•  ๋•Œ ์ž์—ฐ์Šค๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋งŽ์ด ๋ณด์•˜๋Š”๋ฐ, '์ด๊ฑด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ์„๊นŒ' ๋ผ๋Š” ์ƒ๊ฐ์ด ๋งŽ์ด ๋“ค์–ด ๊ธ€์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview @Namespace ํ™”๋ฉด ์ „ํ™˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„  @Namespace ํ”„๋กœํผํ‹ฐ ๋ž˜ํผ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. @Namespace๋Š” ๊ณต์‹ ๋ฌธ์„œ์—” ์•„๋ž˜์™€ ๊ฐ™์ด ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์†์„ฑ์„ ํฌํ•จํ•˜๋Š” ๊ฐœ์ฒด(์˜ˆ: view)์˜ ์˜๊ตฌ ID๋กœ ์ •์˜๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋™์  ์†์„ฑ ์œ ํ˜•์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ID์™€ ํ•จ๊ป˜ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š” ๋ž˜ํผ์ž…๋‹ˆ๋‹ค. ์ด ID๋ฅผ ํ†ตํ•ด์„œ ์ •๋ณด๋ฅผ ๋‹ค๋ฅธ ๋ทฐ์™€ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๊ฒƒ์„ ํ†ตํ•ด ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๊ฐ€๋Šฅํ•ด ์ง‘๋‹ˆ๋‹ค. ์„ ์–ธํ•˜๋Š” ๋ฐฉ์‹์€ ์•„.. 2022. 3. 28.
[SwiftUI] TabView์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ (feat. UITabBar) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ SwiftUI์—์„œ ํƒญ๋ทฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (UIKit์—์„  UITabBar๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.) ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ TabView Contents SwiftUI์—์„œ ํƒญ๋ทฐ๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋„ˆ๋ฌด ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด TabView๋กœ ๊ฐ์‹ธ๊ณ  ํƒญ๋ทฐ ์•ˆ์— ๋“ค์–ด๊ฐˆ ๋ทฐ๋“ค์„ ๋„ฃ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. TabView { View1() View2() View3() ... } TabView Item ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๋ฉด ์•„์ง ํƒญ๋ทฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ์š”. TabView { LoginView() HelloView() SettingView() } ์ด์œ ๋Š” ์ด๋ฏธ ํƒญ๋ทฐ๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ํƒญ๋ทฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์•„์ดํ…œ์„ ์„ธํŒ…ํ•ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ณ ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒญ์•„์ดํ…œ.. 2022. 3. 10.
[SwiftUI] @State๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์š”์ฆ˜ SwiftUI ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ @State๊ฐ€ ๋งŽ์ด ์“ฐ์ด๊ธด ํ•˜๋Š”๋ฐ ๋ญ”์ง€ ์ •ํ™•ํžˆ๋Š” ๋ชจ๋ฅด๊ฒ ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ @State์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํžˆ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ @State ๋ž€? ์• ํ”Œ ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์„ํ•ด๋ณด๋ฉด SwiftUI์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ’์„ ์ฝ๊ณ  ์“ธ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜๋„ค์š”. ๊ฐœ์š”๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1. ์ƒํƒœ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด View๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. 2. ์ธ์Šคํ„ด์Šค ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๊ฐ’์„ ์ฝ๊ณ  ์“ฐ๋Š” ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค. 3. ์ฃผ์˜ํ•  ์ ์€ ๋ทฐ์˜ ๋ฐ”๋”” ์•ˆ์—์„œ ๋˜๋Š” ๋ทฐ์—์„œ ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ์—์„œ๋งŒ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ทฐ์˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋กprivate๋กœ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 4. ์‚ฌ์šฉํ•  ๋•Œ๋Š” $์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ.. 2021. 11. 7.
728x90
๋ฐ˜์‘ํ˜•