UIKit 26

iOS 화면 캡쳐 및 녹화 감지 (feat. SwiftUI)

iOS 화면 캡쳐 및 녹화 감지 (feat. SwiftUI)DRM 기술 적용에 대해서 연구하면서 화면 녹화 감지에 대해서 서술하고자 함. 화면 캡쳐 및 감지하는 시스템 코드// 화면캡쳐NotificationCenter.default.publisher(for: UIScreen.capturedDidChangeNotification) // 화면녹화NotificationCenter.default.publisher(for: UIApplication.userDidTakeScreenshotNotification) 코드 샘플 import SwiftUIstruct ContentView: View { var body: some View { ZStack { MainVie..

iOS 최상단 ViewController + UIWindow (keywindow)

iOS 최상단 ViewController + UIWindow (keywindow)최상단에 위치한 ViewContoller를 재귀를 이용해 안전하게 찾기  최상단 ViewController를 찾는 코드각 컨트롤러의 객체 타입에 맞게 재귀를 이용해 최상단 뷰 컨트롤러를 찾는 코드 public extension UIViewController { func topMostViewController() -> UIViewController { if let presentedViewController = self.presentedViewController { return presentedViewController.topMostViewController() } ..

SwiftUI Info.plist가 없을 때

Info.plist가 없을 때 점점 SwiftUI가 OS별 이슈도 줄어들고 쓸만한 것 같음. 기존에는 UIKit으로 프로젝트를 생성해서 필요한 일정 부분에 SwiftUI를 도입하는 형태였는데, SwiftUI로 아예 프로젝트를 생성하니까 Info.plist가 안보임. 같은 Xcode 버전인데 UIKit으로 생성할 때랑 SwiftUI로 생성할 때랑 달라서 조금 당황ㅎ .. 이 설정이 config? 같은걸로 빠져서 대격변이 일어난건가 싶었는데 그건 아니였음. 완전히 새로운 파일을 교체하는 방법과 기존 파일에서 추가하는 방법 두가지를 알아보고자 함. 기존 파일을 활용하는 방법 타겟에서 저기에 위치함.  완전히 새로운 파일로 교체하는 방법파일 생성할 때처럼 Info.plist 파일을 생성해주기나는 Apperanc..

iOS Lottie 알아보기 (.json, .lottie)

iOS Lottie 알아보기 모든 걸 코드로 구현할 수 없어서 적당히 로티를 사용하는 걸로 하자. 변경로그2022년 2월 19일 03시 13분 최초 포스팅2022년 4월 29일 15시 05분Lottie AnimationView width, height 적용이 되지 않는 문제에 대한 고찰기존 샘플 코드에서 잘못된 레이아웃 수정2022년 4월 30일 16시 39분로티 이미지 색상 변경2024년 11월 15일 03시 01분dot-lottie 오픈소스 사용시 주의할 점    로티 오픈소스 사이트https://github.com/airbnb/lottie-ios/tree/master/Example/iOS/ViewControllers GitHub - airbnb/lottie-ios: An iOS library to..

RxSwift 06 RxDataSources

RxSwift 06 RxDataSourcesRxSwift에서 RxDataSource라는게 있어서 공부해보고자 함. 컬렉션뷰에서 섹션이 여러개면 난이도가 확 올라가는데, 이것도 정말 어렵다  목차 설치하기섹션 만들기전체 코드 리뷰 설치하기RxSwift를 사용하려면 cocoapod 을 통해 설치해야 함pod 'RxDataSources'  섹션 만들기아래처럼 선언하여 구성struct MySection { var header : String var items: [Item]}extension MySection : AnimatableSectionModelType { init(original: MySection, items: [Int]) { self = original sel..

Ch13. Intermediate RxCocoa

Ch13. Intermediate RxCocoa 오랜만에 RxSwift를 포스팅하고자 함.RxSwift 스터디를 했었는데, 스터디 후에도 너무 어려워서 기본기부터 다시 함. RxSwift는 MVVM에서 편하게 사용하려고 쓴다는데 클로저로 MVVM도 안써본 내가 RxSwift부터 하는게 너무 황당해서 스스로 클로저로 했을때 뭐가 어떤지를 겪어보았음 확실히 이 과정이 지나니까 RxSwift과 너무나도 당연한 흐름?이었음을 이해하게 되어서 이해도가 훨씬 높아짐앱 결과예제인데 보고 연습 CLLocationManager + Rx프록시로 묶어서 처리한건데 정말 깔끔하게 묶어내고 있음import Foundationimport CoreLocationimport RxSwiftimport RxCocoaextension C..