SwiftUI: Spacer (스페이서) – 공백 표시 뷰

소개 SwiftUI에서, 스페이서(Spacer)는 공백을 표시하는 View입니다. VStack, HStack에서 사용할 수 있습니다.   참고) ZStack에서도 코드는 동작하지만 ZStack은 Z축의 스택이기 때문에 아래처럼 겹쳐 보입니다. struct StacksView: View { var body: some View { ZStack { Text(“가나다”) Spacer() Text(“ABC”) } } }   Spacer의 기본 사용법 HStack { Text(“가나다”) Spacer() Image(systemName: “play.fill”) 더보기…

SwiftUI: @State와 @Binding의 의미 / 뷰 간의 데이터 전송 (앞→뒤, 뒤→앞)

@State 뷰 계층 구조(view hierarchy)에서 데이터를 저장할 수 있도록 상태(state)를 지정할 때 사용합니다. 변수 앞에 @State를 붙입니다.   UIKit 을 사용했을 때는 어떠한 변수에 변화가 생기면 해당 변화를 직접 관찰하고 반영 해 주어야 했는데 SwiftUI 에서는 property wrapper 를 활용해 이러한 작업을 자동화 할 수 있도록 했다. 변화가 생기면 해당 더보기…

Swift(스위프트): 오디오 라이브러리 AudioKit 프레임워크 소개

AudioKit iOS, macOS 및 tvOS용 Swift 오디오 합성, 처리 및 분석 플랫폼   개요 AudioKit은 코드 저장소, 패키지, 라이브러리, 알고리즘, 애플리케이션, 플레이그라운드, 테스트, 스크립트로 구성된 전체 오디오 개발 생태계(audio development ecosystem)로, 오디오 프로그래머, 앱 개발자, 엔지니어, 연구원, 과학자, 음악가, 게이머 및 프로그래밍을 처음 접하는 사람들의 커뮤니티에 의해 구축되고 사용되는 프레임워크입니다. 더보기…

SwiftUI: Representable을 이용해서 UIViewController 띄우기

소개 SwiftUI 환경에서 UIKit을 이용해 만든 UIViewController를 띄우는 방법에 대한 소개입니다. 예를 들어, MPMediaPickerController (import MediaPlayer 필요)는 UIViewController를 상속받은 뷰 컨트롤러인데 UIKit 환경에서는 self.present(viewController, …)로 바로 띄울 수 있습니다. SwiftUI에서도 이 작업이 가능하지만 복잡한 과정이 필요합니다.   방법 1: UIViewControllerRepresentable을 준수하는 구조체 생성 아래와 같이 UIViewControllerRepresentable를 준수(conform)하는 구조체(struct)를 생성합니다. UIViewControllerRepresentable는 더보기…

Xcode Swift 개발 필수 앱: SF Symbols (iOS등의 시스템 이미지 열람, 호환성 확인)

소개 iOS 등 애플 앱 개발 시 사용되는 시스템 이미지, 기호 등을 편리하게 조회할 수 있는 프로그램입니다. 특히 버전간 호환 문제를 확인하기 위해서 필수로 사용해야 합니다.   SF Symbols 4,400개가 넘는 기호가 포함된 SF Symbols는 Apple 플랫폼용 시스템 글꼴인 San Francisco와 원활하게 통합되도록 설계된 아이콘 라이브러리입니다. 기호는 9가지 가중치와 3가지 더보기…

Swift(스위프트): 백그라운드 작업 (Background Tasks)

소개 BackgroundTasks는 앱이 백그라운드에서 작업을 할 수 있게 하는 프레임워크입니다. (iOS 13부터 이용 가능) 스토리보드 기준으로 설명합니다.   분류 작업의 복잡도, 에너지 양(배터리 소모정도)에 따라 두 가지로 분류합니다. App Refresh Task 상대적으로 가벼운 작업(단순 API 호출 또는 저장 등)에 사용합니다. 실행 빈도가 높고, 사용자가 기기를 사용하는 중에도 작업이 실행됩니다. Processing 더보기…

Swift: 다중 옵셔널 (Nested optional; ??)의 존재 이유와 언래핑 방법

소개 Swift에는 다음과 같은 특이한 형태의 자료형이 있습니다. var nestedOptionalString: String?? = “이중 옵셔널은 왜 있음?” print(nestedOptionalString) 처음에는 Xcode 오류인가 싶었는데, 이러한 자료형은 실제로 사용되는 자료형이었고 무려 iOS 공식 프레임워크(UIKit, MapKit) 등에서 여러 차례 등장합니다. 검색 시 swift double optional 등으로 관련 내용을 찾아볼 수 있으며 공식 명칭은 Nested Optional입니다. 더보기…

Swift(스위프트): 비트 연산자 (Bit Operator)

이 글은 자바스크립트(JavaScript): 비트 연산자 (Bit Operator) 포스트에서 자바스크립트를 Swift로 변경하고 내용을 보강하였습니다.   소개 비트 연산자란 2진수(binary)를 연산할 때 사용하는 연산자입니다. 예를 들어 십진법으로 표기한 정수 70을 이진법 표기로 변환하면 0100 0110B 가 되는데, 이 이진법으로 변환된 값을 기준으로 연산을 수행하는 연산자가 비트 연산자입니다. 이하 별도의 표기법이 없는 경우는 전부 십진법 숫자이며, 더보기…

Swift(스위프트): 달력 그리기 (2) → Interface Builder 스토리보드 GUI 방식으로 그리기

이전 글 Swift(스위프트): 달력 그리기 (1) → 달력 데이터 분석   소개 이전 글 달력 그리기 (1) 포스트에 대한 내용이 먼저 숙지되어야 진행할 수 있습니다. 이전 포스트에서 달력의 데이터를 마련하는 방법에 대해 알아봤는데, 이를 바탕으로 스토리보드 인터페이스 빌더(Interface Builder)를 이용해 GUI 방식으로 달력을 그리는 방법에 대해 알아보겠습니다. 컬렉션 뷰(UICollectionView)를 이용하며, 더보기…

Swift(스위프트): 버튼(UIButton)에서 이미지 오른쪽으로 옮기기 / 이미지와 레이블 간 간격 띄우기 (스토리보드)

소개 인터페이스 빌더 (Interface Builder)에서 GUI 방식으로 버튼(UIButton)에서 레이블(텍스트) 옆에 이미지를 추가하고, 이미지의 위치를 왼쪽 또는 오른쪽으로 이동시키며, 마지막으로 이미지와 텍스트 간 간격을 띄우는 방법에 대해 알아보겠습니다.   버튼에 이미지 아이콘 추가하기 버튼을 뷰 컨트롤러에 추가합니다. 버튼을 클릭한 뒤 오른쪽에 있는 설정 패널에서 Show Attribute Inspector 아이콘을 클릭해 Attribute Inspector를 더보기…