๋ฐ˜์‘ํ˜•

iOS/SwiftUI 2

[SwiftUI] ์ปค์Šคํ…€ BottomSheet์„ ๋งŒ๋“ค์–ด๋ณด์ž

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ผ์ „์— ํฌ์ŠคํŒ…ํ–ˆ๋˜ ๋ฉ”๋ชจ์•ฑ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ BottomSheet์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ •ํ–ˆ์„ ๋•Œ๋งˆ๋‹ค ํ•˜๋‹จ์—์„œ ํ•ด๋‹น ์ž‘์—…์„ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ์•Œ๋ฆผ์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด์—ˆ๋‹ค. ๋ฐ”๋กœ ์•Œ์•„๋ณด์ž. BottomSheetType ์•ž์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ถ”๊ฐ€, ์‚ญ์ œ, ์ˆ˜์ • ์„ธ ๊ฐ€์ง€๋ฅผ ์•Œ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋งž๋Š” ํ…์ŠคํŠธ๋“ค์ด ํ•„์š”ํ•˜๋‹ค. enum BottomSheetType { enum BottomSheetResult { case fail case success var description: String { switch self { case .fail: return "์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค :(" case .success: return "์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค :)" } } } case update(Bottom..

iOS/SwiftUI 2024.01.22

[SwiftUI] ๊ฐ„๋‹จํ•œ ๋ฉ”๋ชจ์•ฑ์„ ๋งŒ๋“ค๋ฉด์„œ ์•Œ์•„๊ฐ€๋ณด์ž ( feat.TCA )

SwiftUI๊ฐ€ ์ฒ˜์Œ ๋‚˜์™”์„ ๋•Œ, ์•„์ฃผ ์กฐ๊ธˆ UI์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ๋“ค์„ ํ•™์Šตํ–ˆ๋˜ ์ ์ด ์žˆ๋‹ค. ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ์ง€๋‚ฌ๋Š”์ง€ ์ด์ œ๋Š” ์ฑ„์šฉ ๊ณต๊ณ ๋“ค์„ ๋ณด๋ฉด SwiftUI์™€ Combine ๊ทธ๋ฆฌ๊ณ  TCA๊ฐ€ ๊ธฐ์ˆ ์Šคํƒ์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ์ƒ๊ฐ๋ณด๋‹ค ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค. ๋ฏธ๋ค„๋’€๋˜ SwiftUI๋ฅผ ํ•™์Šตํ•ด์•ผํ•  ๋•Œ๋‹ค. ์šฐ์„  ๊ณผ๊ฑฐ์— ํ•™์Šตํ–ˆ๋˜ ๊ฒƒ๋“ค ์ค‘์— ๊ธฐ์–ต์— ๋‚จ๋Š” ๊ฒƒ์ด ์ „ํ˜€ ์—†๋‹ค. ์—ญ์‹œ, ์ผ๋‹จ์€ ๋ญ๋ผ๋„ ๋งŒ๋“ค์–ด๋ด์•ผ ๋  ๊ฒƒ ๊ฐ™๋‹ค. UIkit์„ ํ•™์Šตํ•˜๋ฉด์„œ ๊ฐ„๋‹จํ•œ ๋ฉ”๋ชจ์•ฑ์„ ๋งŒ๋“ค์—ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์—๋„ ๋งŒ๋“ค์–ด ๋ด์•ผ๊ฒ ๋‹ค. ๋ฉ”๋ชจ์•ฑ ๊ตฌ์กฐ ๊ฐ„๋‹จํ•˜๋‹ค. ๊ธฐ๋ณธํ™”๋ฉด - ์ƒ์„ฑ๋œ ๋ฉ”๋ชจ๋“ค์ด ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ณด์ด๋Š” ํ™”๋ฉด + ๋ฉ”๋ชจ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” SearchBar ์ˆ˜์ • ๋ฐ ์ถ”๊ฐ€ ํ™”๋ฉด - ๋ฆฌ์ŠคํŠธ์— ์žˆ๋Š” ์•„์ดํ…œ์„ ํด๋ฆญํ•ด์„œ ๋“ค์–ด์˜ค๊ฒŒ๋˜๋ฉด ์ˆ˜์ • - ์ƒ๋‹จ์˜ Toolbar์—์„œ ์ถ”๊ฐ€..

iOS/SwiftUI 2024.01.18
๋ฐ˜์‘ํ˜•