swiftUI
-
SwiftUI Preview - ThunkSwiftUI 2025. 11. 29. 21:38
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI Preview๊ฐ ์ด๋ป๊ฒ ์ฝ๋ ๋ณ๊ฒฝ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ๋์ง ๊ทธ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊น๊ฒ ํํค์ณ๋ณด๋ ค๊ณ ํฉ๋๋ค ๐๐ปPreview is not magicSwiftUI Preview๋ ๋ง์น ๋ง๋ฒ์ฒ๋ผ ์์์ ์ง ํ๊ณ ์๋ํ๋๊ฒ์ฒ๋ผ ๋ณด์ด์ฃ .struct ContentView: View { var body: some View { Text("Hello") // If you change this }}#Preview { ContentView() // It will be update immediately} ์ฑ ์ ์ฒด๋ฅผ ๋ค์ ๋น๋ํ์ง ์์๋ Preview๊ฐ ์ฆ์ ๋ฐ์๋๋ ์ด์ ๋ ๋ฐ๋ก Xcode๊ฐ ์๋ ์์ฑํ๋ Preview-Thunk ํ์ผ(.prev..
-
SwiftUI's diffingSwiftUI 2025. 9. 27. 06:31
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ ์ฑ๋ฅ์ ๊ด๋ จ๋ ํต์ฌ ๋ฉ์ปค๋์ฆ์ธ diffing ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ทฐ ์ฌ์์ฑ ์ต์ ํ์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค ๐๐ปSwiftUI's diffingSwiftUI๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ด๋ฐ ๊ถ๊ธ์ฆ๋ค์ด ์๊ธฐ์ง ์๋์?"List๋ฅผ ์คํฌ๋กคํ ๋ ์ ์ด๋ ๊ฒ ๋ฒ๋ฒ ๊ฑฐ๋ฆฌ์ง? ๐ค""์ํ๊ฐ ์กฐ๊ธ๋ง ๋ฐ๋์ด๋ ์ ์ฒด ํ๋ฉด์ด ๋ค์ ๊ทธ๋ ค์ง๋ ๊ฒ ๊ฐ์๋ฐ?""ForEach์์ id: .self๋ฅผ ์ฐ๋ฉด ์ ๋๋ค๊ณ ํ๋๋ฐ ์ ํํ ์์ง?""Airbnb์์ 15% ์ฑ๋ฅ ๊ฐ์ ํ๋ค๋ ๋ฐฉ๋ฒ์ ๋ญ๊ฐ? ์ด ๋ถ๋ถ์์ ๋ต์ ์ฐพ์ผ๋ ค๋ฉด SwiftUI์ diffing ์๊ณ ๋ฆฌ์ฆ์ ์ดํดํด์ผ ํฉ๋๋ค.Why SwiftUI Diffing Matters More Than Ever?๐ Performance Issues๋ณต์กํ ๋ฆฌ..
-
Ensuring 60fps Animations in SwiftUI (GPU Rendering Optimization)SwiftUI 2025. 8. 23. 10:27
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ SwiftUI ์ ๋๋ฉ์ด์ ์ ์ฑ๋ฅ์ ๊ทนํ๊น์ง ๋์ด์ฌ๋ ค ์ผ๊ด๋ 60fps๋ฅผ ๋ณด์ฅํ๋ ์ค์ ์ต์ ํ ๋ฐฉ๋ฒ๋ค์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐SwiftUI Animation Performance Deep Dive์ด๋ฐ ๊ฒฝํ ์์ผ์ ๊ฐ์?"๋ถ๋๋ฝ๊ฒ ์์ง์ด๋ค๊ฐ ๊ฐ์๊ธฐ ๋์ด์ ธ์ ๐ฑ""๋ณต์กํ ๋ฆฌ์คํธ์์ ์คํฌ๋กคํ ๋ ๋ฒ๋ฒ ๊ฑฐ๋ฆผ""์ฌ๋ฌ ์ ๋๋ฉ์ด์ ์ด ๋์์ ์คํ๋ ๋ ํ๋ ์ ๋๋กญ ๋ฐ์""๋๋ฐ์ด์ค๊ฐ ๋จ๊ฑฐ์์ง๋ฉด์ ์ ๋๋ฉ์ด์ ์ด ๋๋ ค์ง"์ด๋ฐ ๋ฌธ์ ๋ค์ ๋จ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ํด์น๋ ๊ฒ์ ๋์ด์์ ์ฑ์ ํ์ง ์ธ์์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.ํนํ iOS 17๋ถํฐ ProMotion ๋์คํ๋ ์ด๊ฐ ๋ ๋๋ฆฌ ํผ์ง๋ฉด์, ์ฌ์ฉ์๋ค์ 120fps๊น์ง๋ ๊ธฐ๋ํ๊ฒ ๋์๊ฑฐ๋ ์. Why 60fps Matters More Than..
-
What's new in SwiftUI (feat. WWDC 2025)SwiftUI 2025. 6. 11. 18:30
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐WWDC 2025๊ฐ ๋ง ์์๋์์ด์!๊ทธ๋์, ์ฒซ๋ฒ์งธ ์ดํด๋ณผ ์ฃผ์ ๋ก What's new in SwiftUI ์ ๋๋ค ๐๐ป Overview์ฌ์ค์ ์ด๋ฒ WWDC 2025์ ๊ฐ์ฅ ํต์ฌ์ Liquid Glass๊ฐ ์๋๊น ์ถ์ต๋๋ค.๋ชจ๋ Apple ํ๋ซํผ์์ ๋ ๋์ ๋์์ธ์ ์ฑ์ ๊ฐ๋ฐํ ์ ์๋๋ก SwiftUI์์๋ ์๋ก์ด ๊ธฐ๋ฅ๋ค์ด ์๊ฐ๋์์ด์.Liquid Glass๋ฅผ ์ฌ์ฉํด ์ฑ์ ๋์์ธ์ ์ ํ๋ ๋ฐฉ๋ฒ๋ค์ด ์๊ฐ๋์ฃ .๋์ฑ ํฅ์๋ ํ๋ ์์ํฌ์ ์๋ก์ด ํด๋ค์ ์ด์ฉํด ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์น ์ปจํ ์ธ ๋ฐ ์์ ํ ์คํธ ํธ์ง๊ณผ ๊ฐ์ ์ง๋ณด๋ ๊ธฐ๋ฅ์ ํตํฉํ๋ ๋ฐฉ๋ฒ๋ ์ดํด๋ณผ ์ ์์ต๋๋ค.๋, 3์ฐจ์ ๋ทฐ ๋ ์ด์์์ ํฌํจํด ๋ ๋ง์ ๊ธฐ๋ฅ๋ค๋ ๋ค๋ค๋ณผ ์ ์์ด์. ํ๋ฒ ๋ณธ๊ฒฉ์ ์ผ๋ก ๋ฆฌ์บกํด๋ณผ๊น์? Make the ne..
-
MarqueeSwiftUI 2025. 3. 18. 19:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Marquee์ ๋ํด ์์๋ณด๊ณ ๊ฐ๋จํ SwiftUI๋ก ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๐๐ป Marquee?Marquee๋ ํ ์คํธ๊ฐ ์ข์ฐ ํน์ ์ํ ํํ๋ก ์๋์ผ๋ก ์ด๋ํ๋ UI ์์์ ๋๋ค.์ผ๋ฐ์ ์ธ ์ฐ์์ผ๋ก๋ ๋ง์ด๋ค ๋ณด์ จ๋ฏ, ๊ณต์ง์ฌํญ์ด๋ ์ฃผ์ ์์ธ์ ๊ฐ์ ํ์ ๋ฑ์์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค!์ด๋ค๊ฑด์ง๋ ์๋ ์ค์ ๊ตฌํํ๋ฉด์ ๋ ์์ธํ ๋ณผ๊ป์ใ ใ UIKit์์๋ UIView.animate๋ฅผ ํ์ฉํด Marquee ํจ๊ณผ๋ฅผ ๊ตฌํํด๋ณผ ์ ์์ฃ .๊ทธ๋ฐ๋ฐ ์ด๋ฒ ํฌ์คํ ์ SwiftUI์ ์ด์ ์ด๋ผ GeometryReader, Animation ๋ฑ์ ์กฐํฉํด ํ๋ฒ Marquee ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ณผ๊น ํฉ๋๋ค. ๊ทธ๋ผ ์์ํด๋ณผ๊น์?Marquee in SwiftUI์ฝ๋๋ถํฐ ๋ณด์์ฃ ! struct Content..
-
DynamicTypeSize๋ก ์ ๊ทผ์ฑ ๋์ด๊ธฐ (feat. SwiftUI)SwiftUI 2025. 1. 24. 16:42
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ DynamicTypeSize๋ก ์ ๊ทผ์ฑ์ ๋์ด๋๊ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ฐ์ DynamicTypeSize์ด ๋ญ์ง ์์์ผ๊ฒ ์ฃ ? DynamicTypeSize๋ก ์ ๊ทผ์ฑ ๋์ด๊ธฐSwiftUI์์ ์ ๊ณตํ๋ ๋์ ํ ์คํธ ํฌ๊ธฐ ์กฐ์ ์์คํ ์ด๋ผ๊ณ ๋ณผ ์ ์์ด์.์ฌ์ฉ์์ ์ ๊ทผ์ฑ ์ค์ ์ ๋ฐ๋ผ ์ฑ์ ํ ์คํธ ํฌ๊ธฐ๋ฅผ ์๋์ผ๋ก ์กฐ์ ํ ์ ์๊ฒ ํด์ฃผ์ฃ . iOS 15.0 ๋ถํฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ ์๋ ์๋์ ๊ฐ์์. enum DynamicTypeSize ์ด๊ฑฐ ํ์ ์ด๋ฉฐ ์ผ์ด์ค๋ค๋ก๋ ์๋์ ๊ฐ์ด type size์ accessibility type size๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค. .xSmall // ๊ฐ์ฅ ์์ ํฌ๊ธฐ.small // ์์ ํฌ๊ธฐ.m..
-
SwiftUI - ScrollBounceBehaviorSwiftUI 2025. 1. 20. 19:47
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ SwiftUI์ ScrollBounceBehavior์ ๋ํด ๊ด๋ จํ์ฌ ์์๋ณด๋ ค ํฉ๋๋ค ๐๐ป ์๊ฐ๋ณด๋ค ๊ฐ๋จํ์ง๋ง ์ ์ฉํ ๊ธฐ๋ฅ์ด๋ ๊ฐ๋ณ๊ฒ ๋ด๋ณผ๊น์? ScrollBounceBehavior?iOS 16.4 ์ด์์์๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ ์ผ๋ก, ์คํฌ๋กค ๊ฐ๋ฅํ ๋ทฐ๊ฐ ์ปจํ ์ธ ๋์ ๋๋ฌํ์ ๋ ํ์ด์ค๋ฅด๋ ๋ฐฉ์์ ์ ์ํฉ๋๋ค. struct ScrollBounceBehavior ํด๋น ๊ตฌ์กฐ์ฒด ํ์ ์๋ ์๋ ์ธ๊ฐ์ง๋ก ๊ธฐ๋ณธ ์ ์๊ฐ ๋์ด ์์ด์. 1๏ธโฃ automatic - ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ๋ซํผ๊ณผ ์ํฉ์ ๋ฐ๋ผ์ ์ ์ ํ ๋ฐ์ด์ค ๋์์ ์๋์ผ๋ก ๊ฒฐ์ 2๏ธโฃ always - ์ปจํ ์ธ ํฌ๊ธฐ์ ์๊ด์์ด ํญ์ ๋ฐ์ด์ค ํจ๊ณผ๋ฅผ ๊ฐ์ง3๏ธโฃ basedOnSize - ์ปจํ ์ธ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฐ์ด์ค ํจ๊ณผ๊ฐ ๊ฒฐ์ ์ฌ๊ธฐ์ ..
-
SwiftUI ์คํฌ๋กค ๋ทฐ์ ์๊ณ๊ฐ ์ฝ์งํ๊ธฐSwiftUI 2025. 1. 16. 19:00
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ์ด๋ ํ ํ์ต ์ ๋ณด ์ ๋ฌ๋ณด๋ค๋ ๊ทธ๋ฅ ์ฝ์ง์ ํ๋ ๊ณผ์ ๊ณผ ๊ทธ๊ฑธ ๊ธฐ๋กํด๋ณด๋ ํฌ์คํ ์ ๋๋ค ๐๐ป SwiftUI์ ์คํฌ๋กค ๋ทฐ์ ์๊ณ๊ฐ ์ฝ์งํ๊ธฐ์ฐ์ , ์๋ ์ฝ๋๋ฅผ ๋ด๋ณผ๊น์? import SwiftUIstruct ContentView: View { var body: some View { ScrollView { VStack(spacing: 50) { Rectangle() .fill(.red) .frame(height: 100) Rectangle() .fill(.green) .frame(height: 100) Rectangle()..