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() 더보기…

Tuist 설치 (mise 사용)

Tuist 설치 현재 공식 홈페이지의 튜토리얼이 옛날 버전 기준이라 관련 내용을 업데이트했습니다. (예: rtx가 mise로 변경됨 등)   Step 1: Tuist 버전을 설치, 관리 및 활성화하는 도구인 mise(구 rtx)를 설치하세요. 터미널을 열고 앞의 $를 제외한 명령어를 한줄씩 입력합니다. $ curl https://mise.run | sh $ chmod +x ~/.local/bin/mise $ ~/.local/bin/mise –version 더보기…

Swift: iOS 프로젝트의 인앱 결제(In App Purchase; IAP) 기초 예제

사전 작업 애플 개발자 계정(유료)가 필요하며, 수익 창출이 허가가 되어야 합니다. 수익 창출 후 App Store Connect에서 인앱결제 제품을 등록해야 합니다. 개인 개발자가 수익 창출이 되려면 은행 계좌 등록, 개인사업자등록 등의 절차를 진행해야 하며 해당 방법 및 제품 등록 방법은 타 블로그 포스트로 대체합니다. [Xcode/iOS] Swift 앱스토어(AppStore) 인앱결제(In-App Purchase)를 위한 더보기…