글

iOS App name localization

이미지
운영 체제: macOS Monterery 12.5.1 사용 버전: Xcode 13.4.1, Swift, SwiftUI ​ iOS App name localization을 알아보겠습니다. ​ 나라마다 그 나라 언어로 앱 이름이 표시되어야지 사용자들에게 편할 겁니다. 이번 시간에는 언어별 앱 이름을 설정하는 방법을 진행하겠습니다. ​ ​ 아래 게시물을 참조하여 InfoPlist.string을 만듭니다. https://shwoghk14.blogspot.com/2022/09/ios-description-localization.html CFBundleName과 CFBundleDisplayName을 사용합니다. InfoPlist.string (en) 영어 파일에는 10, 11 번째 줄과 같이 영어로 적어줍니다. InfoPlist.strings (ko) 한글 파일에는 한글로 적어줍니다. 실행해 봅시다. 끝. 카테고리: iOS

iOS Description localization

이미지
운영 체제: macOS Monterery 12.5.1 사용 버전: Xcode 13.4.1, Swift, SwiftUI ​ iOS Description localization을 알아보겠습니다. ​ 앱을 처음 시작하면 권한을 요구할 때 뜨는 대화창에 문구를 넣을 수 있습니다. 이러한 문구를 직접 넣게 되면 각 나라별로 언어를 지원하지 않아 사용자에게 불편함을 줄 수 있습니다. 예를 들어 영어로 설명을 입력하면 한국 사용자에게도 영어로 보입니다. ​ 이번 시간에는 이 권한 요구하는 창의 설명 부분의 현지화를 다뤄보겠습니다. 보통 설명문을 다음과 같이 적어줍니다. 이렇게 되면 한국 사용자에게도 이렇게 보입니다. Camera use to classificate flags를 한글로 표현하도록 만들겠습니다. ​ ​ Info에서 현지화를 지원할 항목에 이름을 봅니다. 항목에 마우스 우 클릭 - Raw Keys & Values를 누릅니다. NSCameraUsageDescription이라고 이름이 변경됩니다. 이 이름을 사용해서 변경하기 때문에 기억해야 합니다. Localization에 변경하고 싶은 언어를 추가해 줍니다. 여기서는 한국어를 추가해 줬습니다. File - New - File... 을 누릅니다. Strings File을 눌러줍니다. InfoPlist를 적어줍니다. Localize...를 눌러줍니다. Localize를 누릅니다. ​ ​ ​ English와 Korean을 둘 다...

iOS SWIFT_VERSION is unsupported

이미지
운영 체제: macOS Monterey 12.5.1 사용 버전: Xcode 13.4.1, Swift ​ iOS SWIFT_VERSION is unsupported를 알아보겠습니다. ​ 오래된 프로젝트를 다운로드해서 실행하면 이런 문구가 나올 수 있습니다. Swift 버전이 너무 오래되어서 지원하지 않는다는 뜻인데요. 지원하는 4.0, 4.2, 5.0으로 변경합시다. ​ 프로젝트를 누르고, TARGETS를 선택합니다. 그리고 Build Settings로 갑니다. Swift Language Version을 지원하는 Swift 버전으로 변경해 주면 됩니다. ​ ​ 끝. 카테고리: iOS

Android onBackPressed deprecated

이미지
사용 언어: Kotlin 1.7.10 사용 버전: Android Studio Chipmunk 2021.2.1 Patch 2 ​ 안드로이드 onBackPressed deprecated를 알아보겠습니다. ​ 안드로이드 API 33에서는 onBackPressed가 Depreacted 되었습니다. 그 이유는 여기서 확인할 수 있습니다. ​ https://developer.android.com/guide/navigation/predictive-back-gesture Add support for the predictive back gesture이 도입되면서 그렇습니다. 뒤로 가기 동작을 통해 뒤로 가는 것을 미리 보여준다 뭐 이런 기능입니다. ​ onBackPressedCallback 또는 OnBackInvokedCallback을 써라고 하는데 이 글에서는 onBackPressedCallback을 다루겠습니다. 해당 기능을 사용하려면 AppCompat 1.6.0-alpha05(AndroidX) 버전 이상이어야 합니다. 현재 beta01까지 나왔네요.  implementation 'androidx.appcompat:appcompat:1.6.0-beta01' MainActivity의 onBackPressed에 저는 엄청 긴 코드들이 적혀있습니다. 코드는 신경 쓰지 말아 주세요. 이것을 onBackPressedCallback으로 변경해 줄 겁니다. 변수를 하나 만듭니다. 저는 backPressCallback으로 만들었고 null로 초기화합니다. 함수를 하나 만듭니다. 저는 setBackCallback으로 만들었습니다. onBackPressedDispatcher에...

iOS Json decoding to struct

이미지
운영 체제: macOS Monterey 12.5.1 사용 버전: Xcode 13.4.1, Swift ​ iOS Json decoding to struct을 알아보겠습니다. ​ API 서버에서 보통 Json 형식으로 보냅니다. 이것을 swift는 이해할 수 없습니다. 그래서 이해할 수 있는 struct로 변환해서 사용해야 합니다. 이번 시간에는 json을 struct로 변경하는 방법을 알아보겠습니다. 임시로 사용해 볼 Json을 만듭니다. Json은 Key와 Value가 존재합니다.  Key에는 글자 형식이 들어가고, Value에는 Int, Double 또는 Float, String, Bool, Json Array 값이 들어갈 수 있습니다. 위의 Json에는 Json Array 값은 사용하지 않았습니다. 밑에서 다룰 때 다시 보시게 될 겁니다. ​ 예전에는 이러한 Json을 불러오기 힘들었는데, Codable이라는 Protocol을 만들면서 쉽게 만들 수 있게 되었습니다. ​ Struct를 하나 만들어 줍니다. Json과 동일한 이름으로 변수를 만들어줍니다. 여기서 문제가 발생합니다.  7 번째 줄 Nick name의 경우 공백이 존재함으로 변수로 바로 만들 수 없습니다. 그리고 6 번째 줄 class의 경우도 이미 지정된 이름으로 바로 사용할 수 없습니다. ​ 여기서 필요한 게 CodingKeys입니다. enum을 사용하고 String과 CodingKey를 상속받습니다. case에는 같은 변수 면 그냥 변수 이름만 적고 다른 경우 24 번째 줄처럼 원래 Json 키값을 적어줍니다. 이제 준비...

글쓴이에게 캐모마일 한 잔

이미지
안녕하세요. 글쓴이 노재화 입니다. 저는 '많은 사람들에게 도움이 되었으면 좋겠다'는 생각으로 글을 씁니다. 글을 쓸 때는 정말 많은 정성과 시간이 필요합니다. 따뜻한 캐모마일 마시고 다시 힘내어 더 좋은 글로 찾아뵙겠습니다. 캐모마일 이미지를 누르시거나 QR 코드를 스캔하시면 카카오 페이로 연결됩니다. 감사합니다. If you are out of Korea. You can use PayPal for give me a cup of chamomile. https://paypal.me/StarlightLabKR?country.x=KR&locale.x=ko_KR OR Thank you.

iOS Make a selectable collection view

이미지
운영 체제: macOS Monterey 12.5 사용 버전: Xcode 13.4.1, Swift, UIKit, Storyboard ​ iOS Make a selectable collection view를 알아보겠습니다. Collection View를 눌렀을 때, 상세 페이지로 이동하는 것을 해볼 겁니다. ​ ​ 아래 글을 참조하여 collection view를 만들어 주세요. https://shwoghk14.blogspot.com/2022/08/ios-how-to-make-collection-view.html 계속 이어서 진행해 봅시다. Main.storyboard로 갑니다. 상세 페이지를 만들어야 합니다. View Controller를 추가합니다. 상세 페이지에서 무엇을 보여줄지, 항목들을 넣습니다. 저는 Image view 하나와 label 두 개를 넣었습니다. 상세 페이지를 위한 ViewController를 만들어 줍니다. File - New - File... 을 누릅니다. Cocoa Touch Class를 선택합니다. Class에는 아무 이름이나 적어줍니다. 저는 DetailViewController를 적었습니다. Subclass of에는 UIViewController를 선택합니다. Create로 만들어 줍니다. Main 스토리보드로 갑니다. DetailViewController의 Class와 StoryboardID를 적어줍니다. 저는 DetailViewController라고 적었습니다. DetailViewController.swift에 image view와 label들을 연결합니다. ...