Swift(스위프트): 달력 그리기 (1) → 달력 데이터 분석

출처 Creating a Custom Calendar Control for iOS   소개 아래와 같은 달력을 그리고자 합니다.   달력을 보면 일요일 ~ 토요일 순으로 해당 날짜가 적혀 있습니다. 괄호 안은 해당 달에 속하지 않는 이전 달 또는 다음달 날짜가 적혀있습니다. 예를 들어 2023년 2월(February)을 보면 첫 주의 (29) (30) (31)은 1월에 속해있으며 더보기…

Swift(스위프트): URL 주소 인코딩 (Percent Encoding)

소개 Swift에서 URL(string:)를 사용하여 텍스트로 된 주소를 이용해 URL 인스턴스를 생성하려고 하는데 한글 등이 포함되어 있으면 nil이 반환되는 경우가 있습니다. 일반적으로 URL은 Percent Encoding이라고 하는 특수한 인코딩을 사용하며 Swift의 URL은 자동 인코딩을 지원하지 않기 때문에 퍼센트 인코딩에서 허용하지 않는 문자를 입력하면 에러가 발생하는 것입니다. 퍼센트 인코딩 (위키백과) 예를 들면 크롬에서 더보기…

Swift(스위프트): 멀티피어 통신 (Multipeer Connectivity) [기초]

출처 Multipeer Connectivity Getting Started with Multipeer Connectivity   소개 멀티피어 통신 (Multipeer Connectivity)는 모바일 기기간에 Wi-Fi 네트워크, P2P Wi-Fi 및 Bluetooth 등의 개인 영역 네트워크를 통해 통신할 수 있도록 하는 프레임워크입니다. 연결된 피어는 중간 웹 서비스를 거치지 않고 메시지, 스트림 또는 파일 리소스를 다른 장치로 안전하게 전송할 수 있습니다. 더보기…

Swift(스위프트): 홈 스크린에 바로가기 메뉴(Quick Actions, 퀵 액션) 만들기

소개 아래와 같이 홈 스크린에서 앱 아이콘을 길게 누르거나 혹은 포스 터치(세게 누름; 일부 모델만 지원)를 한 경우 메뉴가 뜨는데 이걸 퀵 액션(Quick Action)이라고 합니다. 퀵 액션에는 두 가지 종류가 있습니다. Static – 앱의 상황과 관계 없이 동일한 역할을 수행하며, 앱을 설치하자마자 바로 이용할 수 있는 메뉴입니다. 예) 검색 기능, 더보기…

Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 下 (커스터마이징)

이전 글 Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 上 (기초)   Core Haptics를 사용하여 사용자 지정 진동을 재생하는 방법 Core Haptics는 아이폰의 Taptic Engine(탭틱 엔진)에서 발생하는 진동, 더 자세히 말하면 정밀한 타이밍과 동작(behaviors)에 의해 동작하는 다양한 진동과 음향 효과를 정의할 수 있게 해줍니다. 이러한 진동들은 말로 설명하기보다는 직접 느껴보는 것이 좋지만, 더보기…

자바스크립트: 두 날짜(Date) 사이의 차이(간격) 구하기

소개 자바스크립트로 특정 두 날짜 사이의 간격을 시분초 또는 연일월 단위로 구하고 싶다면 어떻게 해아할까요? 방법은 아래와 같습니다.   방법 날짜 비교를 위한 Date 인스턴스를 두 개 만듭니다.  이 두 인스턴스를 빼기 연산(-)을 한 뒤 절대값을 씌우면 두 날짜 사이의 밀리초(milliseconds) 차이가 됩니다. 이 값에 1일의 밀리초 단위인 (1000 * 더보기…

Swift(스위프트): Debounce, Throttle 로 함수 실행 횟수 제한 (DispatchWorkItem 이용, 외부 라이브러리 없이)

소개 먼저 Debounce, Throttle 이란 어떤 기능인지에 대해 알아보겠습니다. 자바스크립트 lodash: debounce와 throttle을 이용하여 함수의 실행 횟수 제한 debounce, throttle은 생소한 기능인데요 간단히 요약하면 이벤트의 반복 실행시 콜백 함수의 불필요한 실행을 줄이는 역할을 합니다. 이로 인해 클라이언트가 혜택을 볼 수도 있거나 혹은 서버 측에 불필요한 리퀘스트를 줄일 수도 있습니다.   더보기…

Transporter 앱을 사용하여 App Store Connect 바이너리 파일 업로드

소개 앱 스토어에 앱의 바이너리 파일 (ipa 등)을 업로드하고자 할 때 여러 방법이 있는데 이 중 Transporter 앱을 사용하는 방법을 소개하고자 합니다. Xcode에서도 바이너리 업로드 기능을 지원합니다만, 문제는 알 수 없는 버그가 너무 많고 앱 업로드 중 자주 먹통이 된다는 점입니다. 이럴 때 다른 대안 중 Transporter앱을 사용하면 해당 문제가 더보기…

Swift(스위프트): 공유 메뉴 (UIActivityViewController) 띄우기

소개 공유 메뉴는 아래와 같은 형태로 수많은 앱에서 [공유], [공유하기] 등의 이름으로 존재하는 기능입니다. 특정 메시지나 URL, 이미지, 파일 등을 에어드롭(AirDrop)이나 메시지, 메일, 다른 앱으로 보낼 수 있습니다. 예를 들어 메시지 아이콘을 클릭하면 아래와 같이 영상 URL이 메시지에 첨부됩니다. 이러한 공유 메뉴를 Acitivity View라고 합니다. Swift에서는 UIActivityViewController로 공유 메뉴를 띄울 더보기…

Swift(스위프트): 아이폰 진동(Vibration, Haptic) 구현하기 上 (기초)

소개 Swift에서 진동(Vibration 또는 Haptic)을 구현하는 방법입니다. 진동은 아이폰에서만 지원하고 아이패드나 아이팟 터치에서는 사용할 수 없습니다. 테스트하려면 실제 아이폰 기기가 필요합니다.   기초 아이폰에서 진동을 발생시키는 방법은 크게 3가지가 있습니다. 각 진동은 말로 설명하기는 어려우므로 실제로 체험해보세요(?) UINotificationFeedbackGenerator를 사용하는 방법 성공(success), 경고(warning), 에러(error)를 나타낼 때 사용합니다. 진동이 여러 번 나타납니다. 더보기…