์ ์ฒด ๊ธ
-
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()..
-
Recap 2024ํ๊ณ 2025. 1. 13. 18:53
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐ ๊ธ์ผ์ ํฌ์คํ ์ 2024๋ ํ๊ณ ์ ๋๋ค.์ฌ์ค, ์กฐ๊ธ ๋ฆ์์ด์ ๐ฅฒ์๋ ์๋ 1์ 1์ผ ๋์๋ง์ ๋ ์ค๋ฅด๋ ํด๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์์ ํ ํด๋ฅผ ๋์๋ณด๊ณ ์๋ก์ด ์์์ ๋ค์งํ๋ ํ๊ณ ๊ธ์ ์์ฑํ๋๋ฐ์.์ด๋ฒ์๋ ํ๊ณ์ผ์ง ๋ชฐ๋ผ๋ ๊ฐ์ธ์ ์ผ๋ก ์ฐ๋ง, ์ฐ์ด์ ์ ์ ์์ ์ ๋๋ก ๋ง์ด ๋ฐ๋นด๊ธฐ์ ์กฐ๊ธ? ๋ฆ์ ๊ฐ์ด ์์ง๋ง ๊ทธ๋๋ ํ๊ณ ๋ฅผ ์์ฑํด๋ด์ ๐ฅน(์ ์ฐ๋ง, ์ฐ์ด์ ๋ฐ๋นด๋์ง ๋ง์ง๋ง์ ์๊ธฐํ ์์ ์ ๋๋ค.) ๊ฐ๋ฐ์๊ฐ ๋์ ์ฐ๋ 4๋ฒ์งธ ํ๊ณ ์ธ๋ฐ ์๋ ์๋ ๊ทธ๋ฌ์ง๋ง 2024๋ ํ ํด์ 2025๋ ์ฒซ ์์์ด ์ ํํ ๋ง์ ์๋ฏธ๊ฐ ์์์ต๋๋ค. ์๊ฐํด๋ณด๋ ๋งค๋ฒ ํ๊ณ ์์ ์๋ฏธ๊ฐ ์๋ค๊ณ ํ๋๋ฐ, ๊ทธ๋งํผ 1๋ ์ ๊ฝ์ฐจ๊ฒ ์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค โบ๏ธ ์ด๋ฒ 2024๋ ํ๊ณ ๋ ๋น์ฐํ๊ฒ๋ ๋ฌดํ์ ๋ฌด๊ทผ๋ณธ์ ํ๊ณ ์ ๋๋ค ๐ ์ด๋ป๊ฒ ํ๊ณ ํด๋ณผ๊น..
-
SwiftUI์์ UUID๋ฅผ ํ์ฉํ ๋ทฐ ๊ฐฑ์ ์ ๋ฐ์ดํธSwiftUI 2025. 1. 9. 18:53
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ ์ค์ ๋ง์ด ์ฌ์ฉ๋ ์ ์๋ UUID๋ฅผ ํ์ฉํ ๋ทฐ ๊ฐฑ์ ์ ๋ฐ์ดํธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ๋ฌด์์ ํด๋ณด๋๊ฑธ๊น?SwiftUI๋ก ๋ง์ฝ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๊ฑฐ๋ ํ ๋ ๊ฐ์ฅ ๊น๋ค๋ก์ธ ์ ์๋ ๋ถ๋ถ์ด ์ํ ๋ณ๊ฒฝ ์ ์ ๋๋ฉ์ด์ ์ ์๋ก ์์ํ๋๊ฒ์ด์ฃ .ํนํ, Lottie์ ๊ฐ์ ์๋ํํฐ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋์ฑ ๋๋๋ฌ์ง ์ ์์ต๋๋ค.๊ทธ๋์ ์ด๋ฒ์ UUID๋ฅผ ํ์ฉํ์ฌ ํด๊ฒฐํด๋ณด๊ณ ์ ํฉ๋๋ค. ๋ฌธ์ ์ํฉ์ฐ์ ๊ฐ๋จํ ๋กํฐ๋ฅผ ์ฌ์ฉํ ์ฝ๋๋ฅผ ๋ณผ๊ป์. import Lottieimport SwiftUI// ์ฒซ ๋ฒ์งธ ํ๋ฉดstruct FirstView: View { @State var isGrowUp: Bool = false var actio..
-
Swift๋ก ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถํ๊ธฐSwift 2025. 1. 6. 18:49
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ์ฑ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถ์ ์ฃผ์ ๋ก ํฌ์คํ ํ๋ ค ํฉ๋๋ค ๐๐ป ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ก๊น (logging)์ ์ฑ์ ๋์์ ์ดํดํ๊ณ ๋๋ฒ๊น ํ๋๋ฐ ํ์์ ์ธ ๋๊ตฌ๋ผ ๋ณผ ์ ์์ด์.๊ทธ๋ ๊ธฐ์ ์ด๋ฒ ํฌ์คํ ์์ Swift๋ก ๊ตฌํ๋ ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถ์ ํด๋ณผ๊น ํฉ๋๋ค! Swift๋ก ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถํ๊ธฐ์ฐ์ ํด๋น ํฌ์คํ ์์ ๊ฐ์ฅ ํฐ ์ฃผ์ถ์ด ๋๋ ๋ ํด๋์ค ๊ตฌํ์ ์ค๊ณํฉ๋๋ค. 1๏ธโฃ SwiftLog - ์ค์ ๋ก๊ทธ ํ์ผ ๊ด๋ฆฌ์ ์ฐ๊ธฐ๋ฅผ ๋ด๋นํ๋ ํด๋์ค2๏ธโฃ DebugLogger - ๋ก๊ทธ ๋ฉ์์ง ํฌ๋งทํ ๊ณผ ๋ก๊น ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํด๋์ค ํด๋น ํด๋์ค๋ค๋ก ๋ง๋ค์ด์ง ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ํน์ง์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. 1๏ธโฃ ํ์ผ ๊ธฐ๋ฐ ๋ก๊น 2๏ธ..
-
SwiftUI Text์ stroke ์ ์ฉํ๊ธฐ (feat. UIKit)SwiftUI 2025. 1. 2. 18:49
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI Text์ stroke๋ฅผ ์ ์ฉํ๋ ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ด์ ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ํด ๊ธฐ์ ํ์ ์ด ์์ด์. SwiftUI์ Text์ stroke ์ ์ฉํ๊ธฐ์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ Text์ ํ ๋๋ฆฌ์ stroke๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ๋ฒ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ๊ฐ๋จํ๊ธฐ๋ ํ๊ณ ์ ๊ฐ ํ์ํด์ ํ๋ฒ ๋ชจ๋ํ์ด์ด๋ก ๋นผ๋ณด๋ฉด์ ๋งgreen1229.tistory.com ํด๋น ๋ฐฉ๋ฒ์์๋ SwiftUI Text ์์ฒด์ shadow๋ฅผ ์ ์ ํ ์ฃผ์ด ํํํ์๋๋ฐ์.ํ๊ณ๊ฐ ์์์ต๋๋ค.stroke ๋๊ป๋ฅผ ๋๋ฆด์๋ก shadow๊ฐ ํฌ๊ฒ ์ ์ฉ๋๊ณ ๊ทธ์ ๋ฐ๋ผ ์ฌ์ค ์ aliasing, ๊ณ๋จ ํ์์ผ๋ก ๋์์ธ์ด ๋งค๋๋ฝ์ง ๋ชปํ๊ฒ ๋..
-
RangeSet (feat. Set, IndexSet)Swift 2024. 12. 26. 14:35
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Swift 6์์ ์๋ก ๋์ ๋ RangeSet์ด๋ผ๋๊ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ๊ทธ๋ผ ๋ฐ๋ก ๊ฐ๋ณผ๊น์?RangeSetRangeSet์ ๋ฒ์๋ก ํํ๋๋ ๋น๊ต ๊ฐ๋ฅํ ๋ชจ๋ ์ ํ์ ๊ฐ์ ์งํฉ์ ๋๋ค. struct RangeSet where Bound : Comparable Swift 6์์ ํ์ฌ๋์ด iOS 18 ์ด์๋ถํฐ ํด๋น ํ์ ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์์ด์. ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ช ํด๋ณด์๋ฉด, RangeSet์ ๋ถ์ฐ์์ ์ธ ๋ฒ์์ ๊ฑธ์ณ ์๋ ๋น๊ต๊ฐ ๊ฐ๋ฅํ ๊ฐ ์งํฉ์ ํจ์จ์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค.RangeSet์ ์ผ๋ฐ์ ์ผ๋ก ์ปฌ๋ ์ ์ ์ธ๋ฑ์ค ์ ํ ๋ฒ์๋ฅผ ์ ์ฅํด ์ปฌ๋ ์ ์ ์ฌ๋ฌ ํ์ ๋ฒ์๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์์๋ฅผ ๋ณผ๊ป์. var numbers = [10, 12, -..