UIKit 15

[iOS] CoreData 정리 2 실습 (2/2)

[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안에는 내가 생성한..

apple/iOS 2023.12.10

[iOS] CoreData 정리 이론 (1/2)

[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 같은 영구 저장소에 보조적으로 데이터를 저장할 수 있기 때문에 앱이..

apple/iOS 2023.12.10

[UIKit] UILabel Inset

UILabel Inset UILabel의 text와 근간이 되는 label의 고유 view가 가지는 것 사이에 여유공간을 주기 위한 코드 InsetLabel /// UILabel의 text와 컨테이너 사이의 inset값을 설정할 수 있는 커스텀 라벨 final class InsetLabel: UILabel { /// text와 UILabel 사이의 inset값을 설정 var edgeInsets: UIEdgeInsets = .init(top: 2.0, left: 8.0, bottom: 2.0, right: 8.0) override func drawText(in rect: CGRect) { super.drawText(in: rect.inset(by: edgeInsets)) } override var int..

apple/iOS 2023.06.23

[iOS] UICollectionView에 대해서 알아보기 1편

UICollectionView에 대해서 알아보기 1편 이 문서를 작성하는 이유는 개인적으로 TableView보다 CollectionView가 범용성이 더 좋다고 생각하고 있습니다. 테이블 뷰를 컬렉션 뷰로 변환해야할 때 드는 비용을 생각했을 때, 그냥 컬렉션 뷰로 만드는게 더 낫다고 판단했습니다. 그리고 무엇보다도,, 이 문서를 정리하는 가장 큰 이유는 MVVM패턴을 기본으로 개발을 진행했지만, Cell은 늘상 MVC로 작업해 왔습니다.(그 이유는 아마도, Cell에 많은 정보가 담겨본 적이 없었기 때문) ReactorKit을 공부하면서 Cell왜 굳이 Reactor가 필요한가 싶었는데, RxTodo하면서 보니까 필요하더군요! 아무튼 컬렉션뷰를 처음부터 잘 정리해 봅시다!! (목표) - UICollect..

apple/iOS 2022.08.11

[iOS] 화면 스크린샷 및 녹화 감지 (feat. SwiftUI)

화면 스크린샷 및 녹화 감지 ✅ 화면 녹화 및 스크린샷 감지에 대해서 알아봅시다. 우선 화면 녹화 및 스크린샷은 NotificationCenter를 통해 알 수 있습니다. // 화면캡쳐 NotificationCenter.default.publisher(for: UIScreen.capturedDidChangeNotification) // 화면녹화 NotificationCenter.default.publisher(for: UIApplication.userDidTakeScreenshotNotification) ✅ 코드 import SwiftUI struct ContentView: View { var body: some View { ZStack { MainView() // 메인 컨텐트 뷰 BlockView() ..