Deep_Dev
article thumbnail
[SwiftUI] Custom Alert View
๐ŸŽ iOS/SwiftUI 2024. 6. 16. 21:37

โœ… Custom Alert   ํ•ด์ปคํ†ค์„ ํ•  ๋•Œ,์ด๋Ÿฐ ๋ทฐ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ–ˆ์—ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธฐ์กด์˜ Alert๋ฅผ Customํ•˜๋ฉด ๋‚˜์˜ค๋Š”๊ฒƒ์ด๋‹ค.  import SwiftUIstruct ContentView: View { @State private var isAlertPresented = false var body: some View { ZStack { VStack { Button("Show Custom Alert") { isAlertPresented.toggle() } .padding() ..

article thumbnail
[SwiftUI] View -> Flip ๊ธฐ๋Šฅ
๐ŸŽ iOS/SwiftUI 2024. 6. 16. 20:28

โœ… ๋ทฐ๋ฅผ ์ „ํ™˜์‹œํ‚ค๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ธ Flip ๊ธฐ๋Šฅ   1. MainViewimport SwiftUIstruct ContentView: View { @State var isFlipped = false var body: some View { VStack(spacing: 0) { ZStack { if isFlipped { FrontView() } else { BackView() } } .scaleEffect(x: isFlipped ? -1 : 1) .f..

article thumbnail
[SwiftUI] SwiftData
๐ŸŽ iOS/SwiftUI 2024. 4. 22. 20:00

โœ… SwiftData Why is SwiftData ? - SwiftData๋Š” ์™œ ๋งŒ๋“ค์–ด์กŒ์„๊นŒ์š” ? CoreData์™€ Realm์˜ ์žฅ์ ์„ ํ•ฉ์นœ๋“ฏํ•œ ๋Š๋‚Œ What is SwiftData ? ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ทธ ์ž์ฒด๋Š” ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ. ์™ธ๋ถ€ ํŒŒ์ผ ํ˜•์‹ ์—†์ด ์ „์ ์œผ๋กœ ์ฝ”๋“œ์— ์ง‘์ค‘ํ•˜๊ณ  Swift์˜ ์ƒˆ๋กœ์šด ๋งคํฌ๋กœ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ• ํ•œ API ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ @ . โœ… @Model ํด๋ž˜์Šค๋ฅผ persistent ๋ชจ๋ธ์ด๋ผ๋Š” ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์—ญํ• . ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๊ฒŒ๋˜๊ณ , ๋˜ persistent ๋ชจ๋ธ์ด๋ผ๋Š” ํƒ€์ž…์œผ๋กœ ์•ฑํ•œํ…Œ ์ด์ œ ์ด๊ฑด ์Šคํ‚ค๋งˆ์•ผ ๋ผ๊ณ  ์•Œ๋ ค์ฃผ๊ฒŒ ๋œ๋‹ค. PersistentModel : AnyObject, Obersvable,..

article thumbnail
[SwiftUI] TextEditor BackgroundColor ์ ์šฉ
๐ŸŽ iOS/SwiftUI 2024. 4. 22. 10:27

TextEditor์˜ Background Color๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด .scrollContentBackground(.hidden)์œผ๋กœ ๊ธฐ๋ณธ ๋ฐฐ๊ฒฝ์„ ์ˆจ๊ธฐ๊ณ  .background(.clear)๋ฅผ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ด ์ƒํƒœ์—์„œ, TextEditor(text: $memoContent) //.scrollContentBackground(.hidden) .background(.red) .padding() .background(.red) .cornerRadius(10) .lineSpacing(10) ์ฃผ์„์„ ์ง€์›Œ์ฃผ๋ฉด, TextEditor(text: $memoContent) .scrollContentBackground(.hidden) .background(.red) .padding() .background(.red) .corne..

article thumbnail
[SwiftUI] NavigationStack
๐ŸŽ iOS/SwiftUI 2024. 4. 4. 22:06

โœ… ๊ธฐ์กด์˜ ๋ฐฉ์‹ : NavigationView ๊ธฐ์กด์—๋Š” NaivgationView์™€ NavigationLink๋ฅผ ํ†ตํ•ด ํƒ€์ดํ‹€๊ณผ ๋ทฐ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ์‹์œผ๋กœ ์‚ฌ์šฉ์ด ๋๋‹ค. var body: some View{ NavigationView { NavigationLink { ๋ทฐ(color: .red, order: 1) } label: { Text("ํƒ€์ดํ‹€") } } } ๐Ÿ’ก Stack์œผ๋กœ ๋ฐ”๋€Œ๋ฉด์„œ NavigationView์˜ ์–ด๋–ค ๋‹จ์ ์„ ๊ทน๋ณตํ–ˆ๋Š”์ง€ ? NavigationView์˜ ์ฃผ์š” ๋‹จ์  ์ค‘ ํ•˜๋‚˜๋Š” SwiftUI์—์„œ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์•ฑ์˜ ๊ฒฝ์šฐ์—๋„ ๋ชจ๋“  ๋ทฐ๊ฐ€ ๋‚ด๋น„๊ฒŒ์ด์…˜ ์Šคํƒ์— ์ž๋™์œผ๋กœ ํ‘ธ์‹œ๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ, NavigationView๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ง‰๋Œ€์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๊ธฐ๋Šฅ์„..

[SwiftUI] Property Wrapper โ‘ก
๐ŸŽ iOS/SwiftUI 2024. 3. 27. 19:30

โœ… Property Wrapper ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ์‹ธ ํŠน๋ณ„ํ•œ ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด๋ณด๋ฉด, ์–ด๋–ค ๋กœ์ง๋“ค์„ ๋งค๋ฒˆ ๋™์ผํ•˜๊ฒŒ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š๊ณ  Property Wrapper๋กœ ๋งŒ๋“  ํƒ€์ž…์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธํ•ด ๋™์ผ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค. โœ… Property Wrapper๊ฐ€ ์—†๋‹ค๋ฉด ? struct House { private var width = 0 var size: Int { get { return width } set { width = pow(newValue, 20) } } } struct KoreaHouse { private var _appartment = House() private var _villa = House() var appartmentSize: Int { get { return _appar..

[SwiftUI] ํ”„๋กœํผํ‹ฐ๋ž˜ํผ ์ •๋ฆฌ
๐ŸŽ iOS/SwiftUI 2024. 3. 17. 17:54

โœ… Property Wrapper ์†์„ฑ(Property)์— ์ถ”๊ฐ€์ ์ธ ํ–‰๋™์ด๋‚˜ ๊ณ„์‚ฐ์„ ๋ง๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. ํ”„๋กœํผํ‹ฐ ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๋กœ์ง์ด๋‚˜ ๊ณ„์‚ฐ์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค. โœ… PreView ( ์š”์•ฝ ) @State : ๋ทฐ ๋‚ด๋ถ€์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋กœ์ปฌ ์ƒํƒœ๊ฐ’ ์ €์žฅ @Binding : ๋ถ€๋ชจ ๋ทฐ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๊ฐ’์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง @ObservedObject : ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ทฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. @EnvironmentObject : ์•ฑ ์ „์ฒด์—์„œ ๊ณต์œ ๋˜๋Š” ์ƒํƒœ ๊ฐ์ฒด ์‚ฌ์šฉ @Published : ObservableObject์˜ ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ View๋ฅผ ์ž๋™ ๋ฆฌํ”„๋ ˆ์‹œ @AppStorage : UserDefaults์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ..

article thumbnail
[iOS][SwiftUI] @State @Binding
๐ŸŽ iOS/SwiftUI 2024. 1. 7. 00:08

๐Ÿ“š @State @Binding Property Wrapper์— ๋Œ€ํ•ด์„œ State โœ… PropertyWrapper ? ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ์ƒˆ๋กœ ์“ธ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. SwiftUI์—์„œ๋Š” property wrapper๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€์ˆ˜์˜ ๋ณ€ํ™”์™€ ํ•ด๋‹น ์ž‘์—…์„ ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. SwiftUI๋Š” state๋กœ ์„ ์–ธ๋œ ํ”„๋กœํผํ‹ฐ๋“ค์˜ ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. StateValue ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ทฐ๋Š” ํ•ด๋‹น value์˜ appearance๋ฅผ ๋ฌดํšจํ™”ํ•˜๊ณ  ๋‹ค์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค. State ๋ณ€์ˆ˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด View๋Š” ์ƒˆ๋กœ ๋žœ๋”๋ง์„ ํ•˜์—ฌ ํ•ญ์ƒ ์ตœ์‹  ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. State ์ธ์Šคํ„ด์Šค๋Š” ๊ทธ ์ž์ฒด๋กœ ๊ฐ’์ด ์•„๋‹Œ, ๊ฐ’์„ ์ฝ๊ณ  ์“ฐ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ํ˜„์žฌ ๋ทฐ UI์˜ ํŠน์ •์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต Priv..