subscript란? 공식문서에서는 클래스, 구조체, 열거형 등 시퀀스의 멤버 요소에 접근할 수 있는 기능(문법)이라고 합니다. 공식문서 에 문법에 대한 자세한 내용은 나와있으니, 문법은 여기서 참고합시다! 다시 설명하면 클래스, 구조체, 열거형 등에서도 배열이나 콜렉션에서 사용되는 "[]" subscript 문법(첨자)을 통해 접근할 수 있게 도와준다네요. 그리고 subscript을 사용자의 요구사항에 맞게 정의할 수 있다고 하는데, 어떤 방식으로 사용할 수 있는지 간단히 알아봅시다. 사용자가 만든 모델에 쉽게 접근 가능 먼저, 이름과 나이로 간단한 모델(Model)을 만들어 줬고 클래스인 ModelManger를 통해 모델 데이터를 사용하기 편리하게 만들어 줬습니다. 추가로 subscript 문법을 사..
앱 이름 변경하기 info.plist를 수정을 통해, 간단히 앱 이름을 변경할 수 있습니다. 앱 이름 현지화 나라마다, 앱의 이름을 달리 해줘야 할 때 사용 ex. 영어권 문화에서도 앱을 출시했는데, 만약 한국어로 돼있다면 곤란하겠죠. 구현하기 1. Strings File을 생성하고 이름을 'InfoPlist.strings'로 저장해 주세요. 2. 만들어준, InfoPlist 파일의 인스펙터 창에서 'Localize' 버튼을 눌러 줍니다. 3. 프로젝트 설정으로 들어가 Localizations에서 한국어를 추가해 줍니다. 그러면 이와 같이, 하위 파일이 지역별로 나뉘어 생성됩니다. 4. 다시 'InfoPlist.string' 파일로 돌아와서 'Korea'가 체크 돼있다면, 사용 준비 완료! 5. 각 지역..
앱 추적 투명성(App Tracking Transparency) iOS +14.5부터 도입된 개인 정보 보호 관련 기능입니다. 앱에서 자신의 정보를 수집하거나 추적할 여부를 사용자에 물어보는 기능입니다. iOS +14.5 부터, ATT(App Tracking Transparency)가 도입되서 사용자가 추적을 허락할 때만, 광고 추적 식별자인 IDFA(Identifier for Advertisers)를 이용할 수 있게 됬습니다. 여기서, 광고 추적 식별자 IDFA(Identifier for Advertisers)는 사용자에게 맞춤형 광고를 보여주는 기능입니다. 자세한 내용은 공식 문서 를 참고해주세요. 앱 추적 권한 요청하기 먼저, info.plist에서 권한 요청 설정을 해줘야 합니다. 구현하기 참고로..
시작 간단히, App Settings에 접근하는 코드를 알아 봅시다. private func presentAppSettingsAlert() { let alertController = UIAlertController( title: "위치 접근 요청", message: "위치 정보를 얻을 수 없습니다. 위치 권한을 '항상 허용'으로 변경해 주세요.", preferredStyle: .alert ) let action = UIAlertAction( title: "설정창 이동", style: .default, handler: goToAppSettings ) alertController.addAction(action) self.present(alertController, animated: true) } privat..
시작 iOS + 16부터 UIScreen.main는 더 이상 사용되지 않는다는 메시지가 뜨네요. 사용은 가능하지만 그래도 메시지가 거슬리니까, UIScreen.main을 사용하는 대신, 다른 방법으로 Screen의 크기를 구하는 방법을 알아봅시다. 방법 1 공식문서에서 하라는 대로 따라해보기 (정석?!) guard let screen = view.window?.windowScene?.screen else { return } let screenSize = screen.bounds 방법 2 UIApplication를 통해 window 접근해서 사용하기! guard let window = UIApplication.shared.connectedScenes.first as? UIWindowScene else { ..
속성 isSelected을 이용 속성 isSelected은 Bool 타입으로 값을 설정 안 한다면, false 값을 갖고 있습니다. isSelected에서 toggle 메서드를 이용해 줄 겁니다. 만약, 버튼을 클릭 될 때마다 toggle을 실행하게 만들어주면, isSelected의 값이 false true로 계속 전환되겠죠? 여기서, 간단한 로직을 추가하여 버튼이 클릭될 때마다 다른 동작을 갖도록 만들 수 있습니다. @objc func buttonHandelr(_ sender: UIButton) { // 말 그대로 Bool 값을 toggle 합니다. sender.isSelected.toggle() // 버튼이 클릭될 때마다, 버튼 이미지를 변환 if sender.isSelected { sender.se..