์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- CollectionView
- TCA
- realm
- Lv2
- ios
- ๋ฐฑ์ค
- rxcocoa
- MVVM
- reactorkit
- designpattern
- arkit
- UIKit
- BOJ
- Kuring
- combine
- ํ๋ก๊ทธ๋๋จธ์ค
- BFS
- node.js
- Xcode
- SnapKit
- SwiftUI
- ํจ์คํธ์บ ํผ์ค
- Flutter
- Swfit
- tableView
- visionOS
- RxSwift
- XCTest
- raywenderlich
- swift
- Today
- Total
๋ชฉ๋กSwiftUI (36)
lgvv98
[iOS] infinite carousel DiffableDataSource + CompositionalLayout UIKit์์ DiffableDataSource๊ณผ compositonalLayout์ ์ฌ์ฉํ์ฌ ๊ตฌํํด๋ณด์. ์ ์ฒด ์์ค์ฝ๋์ ํด๋น ์ฝ๋์ ๋ํ ์ฃผ์์ ํฌ์คํ ์ ์ผ ํ๋จ์ ์ ๋ถ ๋ฃ์ด๋์์. ์์ ์์ ๋ฌดํํ ํ์ ํ๋ ์คํฌ๋กค ๋ทฐ์ ๋ํ ๊ตฌํ ์์ด๋์ด๋ ์ด๋ฏธ ๋ง์ด ์กด์ฌํ๋, ํด๋น ํฌ์คํ ์์๋ diffableDataSource์ ํน์ฑ์ ๋ง๊ฒ๋ ์ ์ฉ (๊ตฌํ ๋ฐฉ์) [์์ ๋ถ๋ id๋ง ๋ค๋ฅธ ์๋ณธ] + [์๋ณธ] + [๋ค์ ๋ถ๋ id๋ง ๋ค๋ฅธ ์๋ณธ]์ ๋จผ์ ๊ตฌ์ฑํ ํ ํ๋ฒ์ apply diffable์ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์ ๋, snapshot์ ์์ ํ๋๊ฒ ์๋ ๋ค์ ์ฐ์. ํด๋น ๋ถ๋ถ์ iOS 13,..
[SwiftUI] NavigationLink ํ์ดํ ์์ ๊ธฐ SwiftUI์์ NavigationLink๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ์ ์ธ ํ์ดํ๊ฐ ์๊ธด๋ค. ํด๋น ํฌ์คํ ์ ๋ฐฉ๋ฒ์ ๊ถ๊ทน์ ์ผ๋ก ํ์ดํ๋ฅผ ์์ ๋๊ฒ ์๋๊ณ , ZStack๊ณผ opacity๋ฅผ ํ์ฉํ ์ํ๋ UI๋ฅผ ๊ทธ๋ ค๋ด๋ ๋ฐฉ๋ฒ์ด๋ค. import SwiftUI struct ContentView: View { var body: some View { ZStack(alignment: .leading) { NavigationLink { // destination View } label: { EmptyView() }.opacity(0) Text("๋ด ์์ดํ ") } } } ์๋ ์ด๋ฏธ์ง์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
[SwiftUI] keyboard ์ด๋ฒคํธ ํธ๋ค๋ง ์ฑ ๊ฐ๋ฐ์ ์์ด์ ํค๋ณด๋ ์ํ์ ๋ฐ๋ผ์ ๋ทฐ์ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค์ ๋์ด๊ฐ ์กฐ์ ๋๋ ๋ฑ ํค๋ณด๋์ ๊ด๋ จํด์๋ ๊ฝค๋ ๊น๋ค๋กญ๋ค. UIKit์ ์ฌ์ฉํ๋ค๋ฉด - iOS 15 ์ด์: keyboardLayoutGuide๋ฅผ ํ์ฉํ์ฌ ๋ ์ด์์์ ์ก๊ธฐ - iOS 14 ์ดํ: ํค๋ณด๋์ ์ํ์ ๋ฐ๋ผ ํค๋ณด๋์ ๋์ด๋ฅผ ๊ณ์ฐํด์ ๋ทฐ์ ์์น๋ฅผ ์กฐ์ view.keyboardLayoutGuide SwiftUI ์ฌ์ฉ - iOS 15 ์ด์: @FocusState ํ์ฉ - iOS 14 ์ดํ: NotificationCenter์ Combine์ ํ์ฉ ์ํ์ฝ๋ ํค๋ณด๋ ์ํ๋ฅผ ์ฝ์ ์ ์๋๋ก ์๋ ์ฝ๋๋ฅผ ์์ฑ protocol KeyboardReadable { var keyboardPublisher: Any..
SwiftData in UIKit ์ด๋ฒ์๋ SwiftData๋ฅผ UIKit์์ ์ฌ์ฉํด๋ณด์! CoreData๋ฅผ ํ์ตํ๊ธฐ ์ ์๋ SwiftData๊ฐ ์ง์ง ์ด๋ ค์ ๋๋ฐ, ์ง๊ธ์ ํจ์ฌ ๋ฐฐ์ฐ๊ธฐ ์ฝ๋ค. SwiftData๋ฅผ ์ฌ์ฉํ๋ฉด CoreData์ ๊ฐ๋ ์ ์ผ๋ก ๋ถํฉํ๊ณ ์์ด์ ํ์ตํ๋๋ฐ ๋ ์ฝ๊ฒ ๋๊ปด์ก๋ค. ๋ํ SwiftData๊ฐ ๊ฐ์ง ์ฅ์ ์ด๊ฒ ์ง๋ง, CoreData๋ณด๋ค ๊ฒ์์ด๋ ๋ฑ๋ฑ์ด ๋ ์ค์ํํธ ์ธ์ด์ ์ ์ด์ธ๋ฆฐ๋ค๋ ์ . ๋ค๋ง ๊ณ ๋ คํด์ผํ ์ ์ผ๋ก๋ @objc๋ฅผ ์ฌ์ฉํ๋ ์๋น์ค์ ๊ฒฝ์ฐ์๋ ๋์ ํ๊ธฐ๊ฐ ์กฐ๊ธ ์ด๋ ค์ธ ์ ์๋ค. ์ด๋ฒ ์ค์ต ๊ฒฐ๊ณผ๋ฌผ ์์ - create: ์์ดํ ์ถ๊ฐ - read: ์ ์ฒด ์์ดํ reloadData - update: ํธ๋ฆฌ -> ์ฐํ์ ์ ๋ฌผ๋ก ๋ฐ์ดํฐ ๊ฐฑ์ - delete: ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์ ์ค์ต์ฉ ์ฝ๋..
[iOS] CoreData ์ ๋ฆฌ 2 (์ค์ต) (2/2) 1ํธ์ ์ด๋ก , 2ํธ์์๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์์๋ด ์๋ค. 1ํธ: https://rldd.tistory.com/586 CoreDataSampleCode Core Data๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ฌ์ ์ค๋น - ํ๋ก์ ํธ ์์ฑ์ ์ด๋ ๊ฒ ์์ฑํ๋ฉด AppDelegate์ SceneDelegate์ ๊ธฐ๋ณธ์ ์ผ๋ก Core Data๋ฅผ ์ํ ์ฝ๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ๋จผ์ SceneDelegate์์๋ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋์ด๊ฐ์๋ ํ์ฌ ์ปจํ ์คํธ๋ฅผ ์ ์ฅํ๊ณ ์์ต๋๋ค. ํด๋น ์ปจํ ์คํธ์ hasChanges ์ฆ ๋ณํ๊ฐ ์๋ค๋ฉด save๋ฅผ ํ๊ณ ์์ต๋๋ค. ๋จผ์ persistentContainer ๋ณ์๋ฅผ ์ดํด๋ด ์๋ค. NSPersistentContainer(name: ... )์ name์์๋ ๋ด๊ฐ ์์ฑํ..
[iOS] CoreData ์ ๋ฆฌ ์ด๋ก (1/2) CoreData์ ๋ํด์ ์์๋ด ์๋ค. 1ํธ์์๋ ๊ฐ๋ ๊ณผ ์ด๋ก ์ ์ค์ ์ผ๋ก ์์ ํ๋ฉฐ, ์ฝ๋ ์ค๋ช ์ 2ํธ์์ ์ด์ด์ง๋๋ค. [iOS] CoreData ์ ๋ฆฌ ์ด๋ก (1/2): https://rldd.tistory.com/587 Core Data๋? - ์ฝ์ฝ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ํตํด ์ ๊ณตํ๋ ์ธ ๋ฉ๋ชจ๋ฆฌ(In-Memory) ๋ฐฉ์์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ ์์ํฌ. - ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ๊ณผ ์ ์ฌํ๊ฒ ๋ฐ์ดํฐ CRUD๊ณผ์ ์ ์ํํ ์ ์์. - Apple ์ํ๊ณ ํ๊ฒฝ(iOS, macOS ๋ฑ)์ ์ง์ํ๊ณ objc์ swift์ธ์ด์์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์. - ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฐฉ์ ๊ธฐ๋ฐ์ด๊ธด ํ๋, ๋ด๋ถ์ ์ผ๋ก๋ SQLite ๊ฐ์ ์๊ตฌ ์ ์ฅ์์ ๋ณด์กฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ์ด..