
오늘은 문서 스캔 기능을 개발하기 위해 사용되는 프레임워크인 visionkit에 대해 알아보고이를 프로젝트에 어떻게 적용했는지에 대해 설명하고자 한다. ✏️ VisionKit이란? visionkit는 기기의 카메라를 사용하여 이미지를 인식하여 OCR기능을 활용할 수 있도록 apple에서 제공하는 프레임워크 중에 하나이다.주로 사용자 카메라를 활용하여 문서를 스캔하는 데 사용되거나, 특정 문자를 인식하는 데 사용된다. 이 중에서 나는 문서 스캔에 대한 기능을 구현하고자 하였다. 1️⃣ VNDocumentCameraViewController사용자가 기기 카메라를 통해 문서를 찍었을 때 곧바로 문서를 스캔하도록 하는 기능은 아이폰 유저라면 카메라 앱이나 메모 앱을 통해서 경험해 보았을 것이다.이 기능을 ..

🚨 문제상황Xcode 15.3 + iOS 18.2에서 scrollview 내부에 gesture가 있으면 스크롤 뷰가 먹히지 않아 화면이 스크롤되지 않는 버그가 존재하는 걸 발견했다. 구글링 해서 찾아보니 xcode 버그 같긴 한데 testflight로 배포된 핸드폰에선 또 잘 작동하고, iOS 17.5 버전의 시뮬레이터는 잘 작동되었다,,(왜 18.2만 안되는 거지) 문제가 되는 코드는 아래와 같다..gesture( DragGesture() .onChanged { value in withAnimation { if value.translation.width 위에 작성된 코드는 스와이프 기능 자체적으로 custom 하여..

오늘은 디바운스에 대해 알아보자! 💡Debounce vs throttleDebounce : 일정시간 내에 이벤트를 실행했을 때 마지막(또는 첫 번째) 이벤트만 실행되도록 하여 일정시간이 지난 후에 이벤트를 트리거 시킨다. Throttle : 지정된 시간 간격으로 구독한 최근 값(마지막 이벤트)을 publish한다. 입력 후 바로 입력된 다음 대기 상태로 넘어간다. 디바운스에 대해 자세히보면 combine에 속한 메서드이다. 그래서 꼭 combine을 import 해줘야 하고, for dueTime과 scheduler는 debounce를 사용할 때 필수로 지정해줘야 하는 값이기 때문에 잘 알아보고 넘어가자! for dueTime: 실행시킬 이벤트 시간scheduler: publisher가 요소를 어디..

아이폰에서 앨범 및 카메라에 접근할 때 접근권한 팝업에 대해 본 적 있을 것이다!!사용자 개인정보에 함부로 접근할 수 없어 동의를 얻고 구해야 한다. 따라서 접근권한 팝업 띄우는 것을 SwiftUI에서 적용해보려고 한다 1️⃣ Info 파일 권한 설정하기 접근: 프로젝트파일 -> TARGETS -> Info 접근해서 맨 밑에 항목을 클릭하면 +를 통해 항목을 추가할 수 있다 추가해야 하는 파일은 아래의 항목 2개를 찾아서 추가해 주면 된다 카메라 추가 : Privacy - Camera Usage Desciption앨범 추가: Privacy - Photo Library Usage Desciption 2️⃣ 사용방법이제 필요한 곳에 연결해 주면 끝이다! 위에 기능을 사용하는 파일에 꼭 아래 프레임워..

오늘은 개발 중 발생했던 문제 상황에 대해 어떤 문제가 발생했고 어떻게 해결했는지 포스팅해보고자 한다! 📍 발생한 문제메인 화면 -> 나의 소비내역 -> 내역 상세 보기 후 다시 메인화면으로 돌아왔을 때 나의 소비내역을 아무리 클릭해도 페이지가 이동하지 않는 문제가 있었다. 현재 문제가 발생한 버전은 시뮬레이터 iOS 15 17.5 버전이다. 메인 화면으로 돌아왔을 때 클릭해도 아무런 이벤트가 발생하지 않는다... 그래서 코드를 확인해보니까 NavigationLink로 잘 연결시켜주고 있고, 딱히 문제가 되는 부분이 없다!!!!! 그래서 테스트를 해봤다.iOS 17.5 버전에 대해서만 그렇고, 17.4 이하 버전에 대해서 테스트해볼 수 있는 기기들에 한해 다 테스트를 해봤지만 iOS 17.5..

오늘은 Custom Week Calendar 구현 과정을 블로그에 기록해 보겠다! 진행하고 있는 프로젝트에서 주간 캘린더를 만들어야 하는데 기존 iOS에서 제공해주는 DatePicker를 사용하기엔 UI를 변경해야 하고, 기능적인 부분도 추가해야 했기에 그냥 커스텀 캘린더로 구현하였다. 디자인 팀 요구사항처음 주간 캘린더 화면에 진입하게 될 시 오늘 날짜를 기준으로 포커싱 맞춰주기소비내역이 없는 날과 소비내역이 있는날의 글자색과 배경색이 달라져야 함현재보다 미래 날짜에 대해선 선택 불가능 하도록 (클릭해도 아무런 액션 x) 기능 구현전체 적인 주간 캘린더를 커스텀 하는 건 다른 블로그를 참고했다.그래서 지금 포스팅하는 건 위 디자인팀 요구사항을 충족시키는데 필요했던 과정들에 대해서 설명해보고자 한다!..

오늘은 ScrollViewReader에 대해 알아보자 먼저 ScrollView와 ScrollViewReader는 무엇이 다른걸까?? ScrollView 스크롤 뷰는 단순히 스크롤 할 수 있는 뷰를 의미한다!그래서 스크롤이 가능한 뷰에 사용하고 싶을 때 사용하면 된다. ScrollViewReader 반면 ScrollViewReader는 현재 스크롤링을 감지하여 자동으로 스크롤되어 필요한 포인트로 위치 변경해주는 기능이 있다 하위 View, ScrollView를 스크롤하기 위해 Proxy라는것과 함께 작업할 수 있도록 프로그래밍 방식의 스크롤을 제공하는 뷰이다.ScrollViewReader를 사용하려면 내부 뷰가 ScrollView로 감싸져있어야 한다. -> ScrollViewReader를 사용한다고 S..

오늘은 상태 관리하는 방법 중 하나인 EnvironmentObject에 대해 알아보고자 한다. EnvironmentObject란? 애플공식문서에서는 EnvironmentObject를 부모 뷰나 조상뷰에서 observable object 타입으로 제공하는 프로퍼티라고 한다. SwiftUI에서 전역으로 상태를 관리하며 데이터 공유 메커니즘 중에 하나이다!앱에서 하나의 데이터를 여러 뷰에서 사용할 때 유용하며, observedObject로 하나의 값을 하위 뷰에 계속 전달전달전달 하는 방식이 아니라 상위 뷰에서 새로운 인스턴스를 한번 생성하고 하위 뷰에서 데이터 값에 접근하도록 하는 구조이다! 사용방법공유할 데이터를 가진 클래스는 @ObservableObject 프로토콜을 채택하고 있어야 하며, 관찰 가능..
- Total
- Today
- Yesterday
- 백준
- UIKit
- XCTest
- Xcode
- CoreData
- mlmodel
- rxswift
- 둘만의 암호
- CustomCalendar
- LazyVGrid
- ObservableObject
- SWIFT
- ScrollViewReader
- 스위프트
- mergeconflict
- combine
- swiftUI
- 병합충돌
- 코딩테스트
- imagepicker
- MainActor
- securefield
- 가장가까운같은글자
- 16173
- 프로그래머스
- 클로저
- closure
- Fastlane
- ios
- OSLog
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |