반응형
전체 글

전체 글

    AVCaptureDevice 사용 시 iPhone14 Pro 이상의 카메라 설정 방법

    AVCaptureDevice 사용 시 iPhone14 Pro 이상의 카메라 설정 방법

    AVCaptureDevice 사용 시 일반적인 구글링이나 GPT에서 제공하는 샘플에서는 builtInWideAngleCamera 부분에 대해서만 제공되는 경우가 많은데 이렇게 적용할 경우, QR 코드나 가까운 거리에서 물체를 잡으려고 할 떄 캡쳐 이미지가 흐릿하거나 초점이 맞지 않는 현상이 발생한다. 이런 경우, AVCaptureDevice의 DiscoverySession에서 카메라 모듈을 직접 설정해 주어야 사물 가까이 접근했을 경우, 상황에 맞는 카메라로 변경된다. 아래는 다양한 아이폰 디바이스에서 제공되는 카메라 종류를 추가한 코드이다. func setupDevice() { let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTy..

    Xcode 14 빌드 속도 올리는 방법

    Xcode 14 빌드 속도 올리는 방법

    언제부턴가 Xcode 14에서 단일 속성만 변경하더라도 증분 빌드 시간이 크게 느려지는 것을 느꼈습니다. 개발 시에는 증분빌드 (Increamental build)를 사용함에도 최근 Xcode14에서는 이마저도 기존에 비하면 체감상 많이 느려진 거 같습니다. 한동안 이로 인한 피로감으로 종종 구글링 하던 차에 눈에 띄게 향상되는 방법을 찾아 공유드립니다. 해결방법 문제를 해결하려면 프로젝트 탐색기 -> 타겟 선택 -> 빌드 세팅 -> "사용자 정의 설정 추가" > SWIFT_USE_INTEGRATED_DRIVER > NO 해당 설정 후 또는 제거한 후 Clean Build를 해주셔야 적용됩니다. 참고: https://forums.swift.org/t/swift-5-7-xcode-14-incremental..

    스토리보드, XIB Inspectable에 enum 연동하는 방법

    스토리보드, XIB에서 UIButton (또는 그외 컨트롤) 에 @IBInspectable을 연동해서 사용하는 경우가 많은데, IBInspectable 값을 enum 으로 선언해서 연동하는 방법입니다. enum 타입 작성 enum StatusShape:Int { case Rectangle = 0 case Triangle = 1 case Circle = 2 } @Inspectable 작성 // IB: use the adapter @IBInspectable var shapeAdapter:Int { get { return self.shape.rawValue } set( shapeIndex) { self.shape = StatusShape(rawValue: shapeIndex) ?? .Rectangle } } ..

    M1 ARM-64 Simulator 지원하지 않는 프레임워크 수정하는 방법

    Xcode building for iOS Simulator, but linking in an object file built for iOS, for architecture 'arm64' 아직 M1 맥북을 지원하지 않는 프레임워크를 종종 만나게 되는데요, SPM도 지원하지 않고, XCFrmework 도 지원하지 않는 경우, 어쩔 수 없이 Rosetta 모드로 사용해야 할 수 밖에 없는데요. 관련 해결 방법을 찾아보면 대부분 Build Settings에서 Exclude Architecture 설정에 관한 내용이 대부분이었습니다. Rosetta 모드로 사용하게 될 경우, 시뮬레이터에서 스크롤도 제대로 작동안하거나 잘 죽고 상대적으로 빌드 시간이나 이런 부분도 뭔가 체감적으로 더 늘어나는 듯 한데요. 관련해서 ..

    String에 HTML 링크 적용

    String에 HTML 링크 적용하는 방법입니다. 기본 제공하는 디텍터를 이용해서 링크를 찾고, 태그로 감싸진 경우에는 예외 처리되었습니다. func wrapLinkText() -> String? { let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue) guard let matches = detector?.matches(in: self, options: [], range: NSRange(location: 0, length: self.utf16.count)), matches.count > 0 else { return self } let validators = [">", "\""] var result..

    Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법

    Xcode 정의로 이동하지 않고 우측 에디터에서 보는 방법

    Xcode를 좌, 우 2개로 나누어 쓰는 개발자들이 많은 걸로 알고 있다. 빠른 검색이나 프로젝트 네이게이터에서 왼쪽 오른쪽 선택하는 단축키들은 많이들 알고 있는 듯 하나 현재 편집 중인 창(왼쪽)에서 변수나 함수 등의 선언을 확인하기 위해 Cmd + 마우스 클릭 - 현제 에디터에서 해당 선언 부로 이동 확인 후 다시 돌아가서 작업 보고 싶은 변수나 함수를 프로젝트 검색 후, 검색결과를 Opt+Shift 클릭해서 우측 에디터로 띄우는 방법 보고 싶은 변수나 함수를 Cmd + Shift + O 빠른 검색으로 띄워서 Opt + Shift 클릭 해서 우측 에디터로 띄우는 방법 주위 동료들에게 물어봐도 거의 1번, 그 다음 2번, 3번도 잘 모르는 경우가 많았다. 이것도 불편하다고 느끼던 중 새로운 키를 찾아내..

    Xcode Build 실행 시 명확하게 표시하는 방법

    Xcode Build 실행 시 명확하게 표시하는 방법

    Purpose 최근의 Xcode 버전은 빌드를 시작하더라도 상단에 아주 작게 빌드 표시가 되어 빌드를 진행 중인지 아닌 지 구분이 모호할 때가 많다. 더구나 이곳에 인덱싱, 러닝, 등의 여러개의 작업이 동시에 진행 중일 경우, 직관성은 더욱 떨어지게 된다. 이를 해결하기 위해 여러 옵션을 테스트해 본 후, 빌드 명령 시작 시 베젤을 띄우는 방법이 제일 명확하다 판단했다. 주위 동료들도 이 방법에 많은 공감을 보내주어 공유해본다. 빌드 시작 시 직관적인 표시를 위해 Xcode 설정 > Behavior > 왼쪽 사이드바의 Starts 항목을 선택한 후 우측의 세번재 항목 Notify using bezel of system notification 도 선택해 준다. 이후 빌드를 해보면 위와 같은 베젤이 표시되는..

    KingFisher에서 SVG 이미지 다운로드하는 방법

    Feat 킹피셔를 이용한 이미지 다운로드 함수 작성 URL 경로의 마지막 확장자에 SVG가 있을 경우 SVG를 다운로드 하는 함수 SVGKit 설치 - https://github.com/SVGKit/SVGKit SVGProcessor 작성 import SVGKit import Kingfisher extension UIImageView { func kfSetImage(with urlString: String?) { if urlString?.hasSuffix(".svg") == true { return self.kfSetSVGImage(with: urlString) } if let imageUrl = urlString.map({ App.config.WebResourceURL + $0 })?.url { sel..

    SwiftUI 상에서 HTML 출력과 Link, CSS 적용하는 방법

    Feature SwfitUI에서 HTML을 출력한다. HTML - 링크 클릭 시, 활성화된 링크를 가져오거나, 핸들러를 제공한다. HTML에 CSS를 적용한다. import SwiftUI import WebKit ///참고 - https://stackoverflow.com/a/59018581/3374327 struct SUIWebView: UIViewRepresentable { @ObservedObject var viewModel: SUIWebViewModel let url: URL? let html: String? let css: String? func makeUIView(context: UIViewRepresentableContext) -> WKWebView { var webView: WKWebVie..

반응형