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)를 위한 더보기…

Swift UIKit 예제: 로딩 인디케이터 화면

소개 UIKit에서 특정 로딩 상황이 발생할 때 로딩 인디케이터를 띄우는 예제입니다. 외부 라이브러리를 사용하지 않고 기본 제공 요소로 만들었습니다.   코드 import UIKit struct LoadingIndicatorUtil { static let `default` = LoadingIndicatorUtil() private init() {} private let TAG = 95834114 enum Style { case clear, blur } /// 로딩 인디케이터 창을 더보기…

Swift: Xcode iOS 프로젝트에서 프레임워크(Framework)로 모듈 분리해서 사용하는 방법

소개 iOS 프로젝트에서 어느 부분을 외부 프레임워크(Framework) 파일로 빼서 모듈로 사용하는 방법입니다. 모듈을 불러와 사용하는 방법은 import 키워드를 사용하는 것입니다. import UIKit import WebKit import MapKit   예시로 아래와 같이 데이터가 있으면 그래프를 표시하는 앱을 만들었는데 그래프를 그려주는 부분(클래스 GraphMaker)은 앞으로 코드가 복잡해질 것 같아서 다른 곳에서 개발 및 관리하고 더보기…

Swift: UIKIt에서 뷰의 Frame과 Bounds의 차이

소개 UIKIt에서 뷰의 Frame과 Bounds의 차이점에 대해 알아봅니다.   위치 (1) frame frame은 바로 위에 있는 상위 뷰(superview)를 기준으로 위치가 설정됩니다. superview의 최초 시작 위치를 기준으로 (x: 0, y: 0) 으로 시작합니다. superview가 어느 위치에 있든간에 오로지 superview의 최초 시작 위치를 기준으로 합니다. 최초 시작 위치는 기본적으로 뷰의 <span style="text-decoration: underline;">절대값 더보기…