์ ์ฒด ๊ธ
-
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, -..
-
SwiftUI์ Custom Grid๋ก ์นดํ ๊ณ ๋ฆฌ ๋ทฐ ๊ตฌํํ๊ธฐSwiftUI 2024. 12. 23. 18:55
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ Custom Grid๋ฅผ ์ ์ ํ ๊ตฌํํ์ฌ ์ฐ๋ฆฌ๊ฐ ๋ง์ด ์ ํ ์ ์๋ ์นดํ ๊ณ ๋ฆฌ ๋ทฐ ์์คํ ์ ํ๋ฒ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํฉ๋๋ค ๐๐ป ์ค๋์ ํฌ์คํ ์ ์๋ก์ด ์ง์์ ์ต๋๋ณด๋ค๋ ์ค์ ๋ง์ด ์ฐ์ผ ์ ์๋ ๋ทฐ ๊ฐ๋ฐ์ ์ด์ ์ ๋ง์ถฐ ์ฝ๋๊ฐ ๋ง์ต๋๋ค ๐ SwiftUI์ Custom Grid๋ก ์นดํ ๊ณ ๋ฆฌ ๋ทฐ ๊ตฌํํ๊ธฐ๊ทธ๋ผ ๊ฐ์ฅ ๋จผ์ ์ค๋ ์ด๋ค๊ฑธ ๊ตฌํํด๋ณผ์ง ๊ฒฐ๊ณผ๋ฌผ๋ถํฐ ๋ณด๊ณ ๊ฐ๋ณผ๊น์? ์ ์๋ฐ๊ฑธ ๋ง๋๋ ค๊ณ ํฉ๋๋ค! ์ผ๋ฐ์ ์ธ ๋ฉ์ธ ์นดํ ๊ณ ๋ฆฌ์ ๊ทธ ๋ฉ์ธ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ํํ๋ฉด ๋์ค๋ ์๋ธ ์นดํ ๊ณ ๋ฆฌ์ ํํ ๊ตฌ์กฐ์ ๋๋ค.๋ฌผ๋ก , ์นดํ ๊ณ ๋ฆฌ ํํ๋ ์ ๋ง ๋ค์ํ๊ฒ ์ง๋ง ์ด๋ ๊ฒ ์๋ธ ์นดํ ๊ณ ๋ฆฌ์ ๋ํด์ ๊ทธ๋ฆฌ๋๋ก ํ๋ฒ ์์ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค.์ฌ๊ธฐ์ ์ ๋ ์์๋ก ์ฐ๋ฆฌ๊ฐ ๋ง์ด ์ ํ ์ ์๋ ํ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ..
-
NSObject์ ๋ํ์ฌSwift 2024. 12. 19. 08:44
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ ์ฃผ์ ๋ NSObject์ ๋ํด ํ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค ๐๐ป ์ฌ์ค, NSObject๋ Swift ์นดํ ๊ณ ๋ฆฌ๋ณด๋ค๋ Objective-C์ ๋ ๊ฐ๊น๊ธดํ์ฃ .๋, iOS ๊ฐ๋ฐ์ ๊ทผ๊ฐ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ผ ํ๋ฒ ์์๋ณผ๊น์? NSObject?NSObject๋ Objective-C ๋ฐํ์ ์์คํ ์ ๊ทผ๊ฐ์ ์ด๋ฃจ๋ ์ต์์ ํด๋์ค์ฃ .Foundation ํ๋ ์์ํฌ์ ๋ฃจํธ ํด๋์ค๋ก, ๊ฑฐ์ ๋ชจ๋ Cocoa์ Cocoa Touch ํด๋์ค์ ๊ธฐ๋ณธ ํด๋์ค ์ญํ ์ ํด์ค๋๋ค.๊ฒฐ๊ตญ Objective-C์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ํต์ฌ ์์๋ผ๊ณ ๋ณผ ์ ์์ด์.์ด NSObject๋ฅผ ์์๋ฐ๋ ํ์ ํด๋์ค๋ค์ ๋ฐํ์ ์์คํ ์ ๋ํ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค์ Objective-C ๊ฐ์ฒด์ฒ๋ผ ๋์..
-
UIGestureRecognizerRepresentable ์ฌ์ฉํ๊ธฐSwiftUI 2024. 12. 16. 18:55
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์ UIGestureRecognizerRepresentable์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป UIGestureRecognizerRepresentable?UIGestureRecognizerRepresentable๋ ์ด๋ฒ WWDC 2024์์ ์๊ฐ๋์๋๋ฐ์.iOS 18์ด์์์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค. UIGestureRecognizerRepresentable๋ SwiftUI์์ UIKit์ ์ ์ค์ฒ ์ธ์๊ธฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋กํ ์ฝ์ด์์.์ฐ๋ฆฌ UIViewRepresentable์ด SwiftUI์์ UIKit์ ๋ทฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ฃผ๋ ํ๋กํ ์ฝ์ด์๋๊ฒ๊ณผ ๊ฐ์ ๋งฅ๋ฝ์ด์ฃ .ํด๋น ํ๋กํ ์ฝ์ ํตํด์ ์ฐ๋ฆฌ๋ SwiftUI ๋ทฐ์์ UIKit์ ๋ค์ํ ์ ์ค์ฒ ์ธ..
-
SwiftUI์์ ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ์ฌ์ฉํ๊ธฐSwiftUI 2024. 12. 12. 18:46
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SwiftUI์์ ์ฝ๊ฒ ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ์ ์ฌ์ฉํ๋๊ฑธ ๊ตฌํํด๋ณด๋ ค๊ณ ํฉ๋๋ค ๐๐ป ๋จผ์ ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ๋ ๋ค์ํ ์ฐ์์ด ์์๊ฑด๋ฐ, ํ์ฌ ์ ๊ฐ ํ๊ณ ์ ํ๋ ๊ฒฐ๊ณผ๋ฌผ๋ถํฐ ๊ณต์ ํด๋ณผ๊ป์! ๋๋ฅ - ๐ ์ด๋ฐ๊ฑธ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค! ์ฆ, ํญ๋ทฐ์ ๊ฐ์๊ฑธ ์ฌ์ฉํ์ง ์๊ณ ์ฃ์ง ์ค์์ดํ๋ฅผ ํตํด ์ด์ ๊ณผ ์ดํ ๋ทฐ๋ก ์ฌ๋ผ์ด๋ ํ์์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ ํ๋๋๋ก ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ์ SwiftUI์ ์น์ด๋ณด๋ ค๊ณ ํฉ๋๋ค ๐๐ป ๊ทธ๋ผ ํ๋ฒ ์์ํด๋ณผ๊น์? ์ธํฐ๋ํฐ๋ธ ํธ์ ๋ค๋น๊ฒ์ด์ ๊ตฌํํ๊ธฐ๋จผ์ ์ ๊ฐ ํ๋ ๋ฐฉ์์ผ๋ก๋ SwiftUI์์๋ง ๋ชจ๋ ๊ฑธ ํด๊ฒฐํ ์ ์์ด์.๊ทธ๋ ๊ธฐ์ UIKit์ UINavigationController๋ฅผ ์ฑํํ ๋ณ๋์ InteractivePushNavi..
-
์นด์นด์คํก ๊ณต์ ํ๊ธฐ (๋ฉ์์ง ํ ํ๋ฆฟ)iOS 2024. 12. 5. 18:58
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ํํ ๋ง์ด ์ฌ์ฉํ๋ ์นด์นด์คํก ๊ณต์ ๋ฅผ ํด๋ณผ๊ฑด๋ฐ, ํด๋น ๊ณต์ ๋ฅผ ์ปค์คํ ํ๊ฒ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํด์! ๐๐ป ์๋ฅผ๋ค์ด์ ๊ทธ๋ฅ ๋งํฌ๋ ์ด๋ฏธ์ง๋ง ๋ณด๋ด๋๊ฒ์ด ์๋๋ผ ์นด์นด์ค SDK์ ๊ธฐ๋ฅ์ ์ด์ฉํด ํด๋น ์นดํก ๊ณต์ ๋ฉ์์ง์ ๋ฒํผ์ ๋์ด ๋ค๋ฅธ ๋์์ ํ๋ค๋์ง ๋ฑ์ ๊ตฌํํด๋ณด๋ ค ํฉ๋๋ค ๐ ๊ทธ๋ผ ๋ฐ๋ก ์์ํด๋ณผ๊น์? ์นด์นด์คํก ๊ณต์ ํ๊ธฐ (๋ฉ์์ง ํ ํ๋ฆฟ์ ํ์ฉํ)๊ฐ์ฅ ๋จผ์ ํด์ผํ ์ผ์ ๋น์ฐํ๊ฒ๋ ์นด์นด์ค SDK ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ค๋๊ฒ์ด๊ฒ ์ฃ ?์ ๋ SPM์ผ๋ก ๊ฐ์ ธ์์ต๋๋ค. ํด๋น SDK๋ฅผ ์ฐ๋ฆฌ SPM์์ ์ถ๊ฐํ๋ฏ์ด ์ฝ๊ฒ ๊ฒ์ํ์ฌ ๊ฐ์ ธ์ต๋๋ค.์ด๋ ์ฌ๋ฌ ํจํค์ง ํ๋ก๋ํธ๋ก ์ฌ๋ฌ๊ฐ๊ฐ ๋ณด์ผํ ๋ฐ ์ฌ๊ธฐ์ ํ์ํ๊ฒ๋ง ์ถ๊ฐํ์ ๋ ๋ฉ๋๋ค!Add to Target์ ๊ผญ ํด๋น ํ๋ก์ ํธ ํ๊ฒ์ผ๋ก ๋ง์ถฐ์ค์ผ์ง ์๊ทธ๋ฌ๋ฉด i..