본문 바로가기

iOS/Swift72

[Swift] VisionKit OCR VisionKit을 사용한 OCR 기술 구현이미지 분석 등의 과정을 처리할 핸들러 구현 let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])// Request 클로저 내부에서 해야할 동작 구현let request = VNRecognizeTextRequest { request, error in }  VNImageRequestHandler내 사용되는 VNImageOption은 분석할 이미지의 추가적인 정보를 제공할 수 있음 VNImageOption.cameraIntrinsics:이미지가 촬영된 카메라의 내부 매개변수(camera intrinsic matrix)를 제공예를 들어, 얼굴이나 물체의 깊이, 크기 등을 분석할 때 카메라 렌즈의 초점.. 2024. 10. 7.
[Swift] UITableView, UICollectionView Last IndexPath TableView 마지막 인덱스 private extension UITableView { func lastIndexPath() -> IndexPath { let section = max(numberOfSections - 1, 0) let row = max(numberOfRows(inSection: section) - 1, 0) return IndexPath(row: row, section: section) } } CollectionView 마지막 인덱스 private extension UICollectionView { func lastIndexPath() -> IndexPath { let section = max(numberOfSections - 1, 0) let row = max(numberOfItem.. 2023. 12. 5.
[iOS] View Drawing Cycle (Layout까지 작성함) 혼자 그냥 멍때리는데 View를 그리며 문제 생겼던 부분들이 어떤 것이 있었을까 하고 고민하다가 그냥 심심해서 구글링하며 커스텀 뷰 이쁘장하게 되있는건 어째 구현했을랑가싶어서 구경 좀 했다. 근데 생각해보니 이쁘장한 커스텀뷰를 만들 때 뷰가 어떻게 그려지는 지에 대해 대충은 알고 있는데, 좀 깊이 살펴보며 포스팅한 것은 없는 것 같아서 공부할 겸 씀 우선 뷰가 어떻게 그려지고.. 어떻게 업데이트되며.. 레이아웃을 어떻게 잡는지에 대해서 이해하려면 Main RunLoop에 대해서 이해해야 한다고 한다. ㅇㅇ 그런가보다 하고 공부하믄되것지 뭐~~ Main RunLoop 별개로 우선 알아야 할 것은 내가 밑에서 설명할 RunLoop는 Main Thread에서 돌고있는 놈이다. 얘는 자동으로 돌고 있지만, 다른.. 2022. 8. 7.
[Xcode] 단축키 좀 써주세요... 내가 죽어라고 쓰는 것만 좀 모아봤다. 코드 관련 ⌘ + 방향키 - 줄의 맨 끝단으로 이동 ⌘ + ⇧ + 방향키 - 커서 위치로부터 줄 끝까지 선택 ⌥ + 방향키 - 단어(띄어쓰기 기준) 단위로 이동 ⌃ + i - Indent 정렬 ⌘ + / - 주석 ⌘ + "-" - Zoom out ⌘ + "+" - Zoom in ⌘ + ⌃ + 0 - Zoom Reset ⌘ + 클릭 - 액션 메뉴 ⌥ + 클릭 - Quick Help ⌘ + ⌃ + 클릭 - Definition으로 이동 ⌘ + ⌃ + E - 이름 한꺼번에 바꾸기 ⌃ + ⇧ + 클릭 - 여러 줄 선택하여 동시에 수정 Navigator ⌘ + 0 - Navigator 보이기 / 숨기기 ⌘ + 1 ~ 9 - Navigator 메뉴 순서대로 (Navigator .. 2022. 8. 6.
[Swift] defer 음... 잠이 안와서.. 간단히 defer.. defer가 무엇이냐? 함수가 종료되기 전에 실행되야 할 코드를 작성하는 블럭을 의미한다. 예를 들면.. func config() { // config code.. // after complete config code.. defer { print("complete!") } } 이런 식이다. 이리 간단해보이는 defer는 중첩이 가능한데 이 때 defer 블럭 실행 순서가 중요하다. defer는 Stack 방식으로 동작하여(LIFO) 선언된 역순으로 호출된다. func test() { defer { print("test 1") } do { defer { print("test 2") } print("test 3") } for i in 0.. 2 그리고 다음 블럭.. 2022. 6. 10.
[Swift] mutating 2021.08.11 - [iOS/Swift] - [Swift] Struct Mutating [Swift] Struct Mutating Struct Mutating 구조체의 메소드를 구조체 내부에서 데이터 수정 할 때는 Mutating 키워드를 선언 해주어야함 struct coordinate { var x: Int = 0 var y: Int = 0 mutating func moveTo(x: Int, y: Int) { sel.. limjs-dev.tistory.com ㅋㅋㅋㅋㅋㅋㅋㅋ좀 더 알아보고 쓰지 새끼야... 다시 간단히 정리하려고 씁니다.. 아니 이전에 쓴 것도 맞긴한데.. 동작 방식에 대해서 추가적으로 쓰려한다. 일단 기본적으로.. 구조체의 메소드를 구조체 내부에서 데이터 수정 할 때는 Mutati.. 2022. 5. 8.