Xcode iOS 프로젝트: PrivacyInfo.xcprivacy 작성 방법 + API 목록 및 허용된 사유 번역

소개 2024년 봄부터 App Store Connect에 새로운 앱 또는 앱 업데이트를 업로드하려면 앱의 개인정보 보호 목록에 앱이 API를 사용하는 방식을 정확하게 반영하는 승인된 사유를 포함하고 있어야 합니다. 이는 사용자의 개인 정보 보호를 강화하기 위한 조치로, 앱이 명시한 이유에 딱 맞게 API를 사용하도록 합니다. 만약 필요한 사유가 아직 목록에 없는 경우, 더보기…

Swift: 튜플 (Tuple), 튜플 패턴 분해, 버전 6에서의 변경사항

튜플 (Tuple): 데이터의 집합 튜플(Tuple)은 Swift에 존재하는 두 가지 복합 타입 (compound type) 중 하나입니다. 복합 타입에는 함수 타입(Function type)과 튜플 타입(Tuple type)의 두 가지가 있습니다. 출처: Swift 공식 문서 Types   특징 튜플의 특징은 다음과 같습니다. 여러 값을 동시에 표현 및 저장할 수 있다. (데이터의 집합) 예를 들어 x, 더보기…

SwiftUI: 방사형(원형) 레이아웃 (Radial Layout) 만들기

소개 뷰의 중심점(center point)과 반경을 계산하여 사용자 정의 방사형 레이아웃을 생성합니다. 커스텀 레이아웃 및 예제의 대부분 코드들은 iOS 16부터 지원합니다. 출처: Radial Layout   구현 커스텀 Radial Layout 만들기 레이아웃 중앙에 서브뷰를 배치하고 인덱스 값을 사용하여 최소한의 변형(transforming)을 수행하는 사용자 정의 레이아웃 코드부터 시작하겠습니다. CustomLayout을 생성하고 Xcode의 제안 기능을 통해 더보기…

자바스크립트: 오디오 음원의 음정(음높이, 피치) 조절하기 (외부 라이브러리 없이 AudioContext와 Buffer를 이용)

소개 HTML과 자바스크립트를 이용해 아래와 같이 숫자(Transpose)를 조절하면 서버 상에 있는 오디오 음원의 음정(pitch, 음높이)이 높아지거나 낮아지게 할 수 있습니다. 웹 페이지에서 다른 음높이의 오디오 음원을 재생하고 싶을 때 사용합니다. 장점 외부 라이브러리를 사용하지 않습니다. 단점 음정을 높이면 속도도 같이 조절됩니다. (음정과 속도가 연동됩니다.) playbackRate를 조절하여 속도를 낮춰보려 했으나 속도를 더보기…

SwiftUI 예제: 드래그로 버튼 선택하기

소개 SwiftUI에서 여러 개의 버튼을 드래그로 선택할 수 있는 예제입니다. 클릭으로도 선택 가능하고 터치 드래그를 멈춰도 선택 가능합니다. 예전에 올렸던 SwiftUI 예제: 알파벳 내비게이터(Alphabet Navigator) 만들기 에서 사용했던 기술을 버튼으로 바꿔서 구현한 것입니다.   스타트 코드 struct DragActionView: View { let icons = [ “photo.fill”, “f.cursive.circle.fill”, “house.fill”, “figure.wave”, “airplane”, ] // 화면을 더보기…

Fastlane 기초: 설치, iOS 프로젝트에서 초기화, 인증, ipa 생성, 테스트플라이트 업로드

  소개 Xcode의 iOS 프로젝트에서 Fastlane 설정하는 방법입니다. 다음과 같은 과정을 알아보겠습니다. 컴퓨터에 Fastlane 설치 iOS 프로젝트에 Fastlane 초기화 및 통합 AppStore Connect API로 인증 연결 API 키 생성 Fastfile 설정 외부 파일에 환경 변수 설정 빌드 번호 증가 및 ipa 생성 ipa 파일을 테스트플라이트(TestFlight)로 업로드   컴퓨터에 Fastlane 설치 더보기…

Xcode: 코드 에디터에서 사용할 코드 스니펫(Code Snippet) 추가 및 플레이스홀더 만들기

플레이스홀더 플레이스홀더는 Xcode에서 매우 빈번하게 사용되는 기능입니다. 단독으로 사용하기보다는 주로 코드 스니펫 기능과 결합되어 많이 사용됩니다. “플레이스홀더”는 일반적으로 코드를 작성할 때 사용되는 임시적인 값 또는 표시물을 가리킵니다. 이는 주로 코드 작성 중에 아직 정확한 값을 알지 못할 때 사용됩니다. 플레이스홀더를 사용하면 코드 작성자가 나중에 해당 위치에 정확한 값을 채워넣을 수 더보기…

코딩테스트: 쉬운 계단수 (백준 10844)

문제: 쉬운 계단수 https://www.acmicpc.net/problem/10844 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. 입력: 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력: 더보기…

SwiftUI 예제: 알파벳 내비게이터(Alphabet Navigator) 만들기

알파벳 내비게이터 만들기 아래와 같이 알파벳으로 섹션이 나뉘어져 있으며 해당 알파벳을 클릭하면 섹션으로 이동하는 기능을 알파벳 내비게이터라고 칭하겠습니다. (정식 명칭은 다를 수 있습니다.)   출처 SwiftUI List with Section Index on right hand side?   기본 형태 Contacts배열에 있는 사람 목록을 보여주는 뷰입니다. 예제를 복잡하지 않게 하기 위해 단순 [String] 더보기…

Swift: PDFView에서 터치한 곳의 문서상 좌표 알아내기

소개 PDFView에서 탭했을 때 확대 여부에 상관없이 실제 PDF 문서상의 좌표를 알아내고 싶을 때 사용하는 방법입니다, 스크린상에 터치했을 때 나오는 좌표를 실제 PDF 페이지에 알맞게 변환하여 사용합니다. 확대/축소 및 스크롤 위치 여부에 상관없이 일정한 좌표값을 받을 수 있습니다.   방법 Step 1: UITapGestureRecognizer를 PDFView에 추가 class DrawingPDFView: PDFView { init() 더보기…