Swift: RealityKit 프로젝트에 .rcproject(Reality Composer 프로젝트 파일) 추가하고 앱에 통합하기

소개 Reality Composer 앱으로 만든 프로젝트를 Swift iOS 프로젝트에 추가하고 앱에 연동(통합)시키는 방법입니다.   방법 1) 프로젝트 생성 Augmented Reality App Content Technology를 RealityKit으로 설정 이 상태에서 프로젝트를 실행하면 Experience.rcproject라는 프로젝트 파일이 이미 존재하며 앱을 실제 기기에서 실행하면 박스가 하나 표시될 것이지만, 이 포스트에서는 해당 기본 파일을 사용하지 않고 다른 더보기…

Swift: UIKit 프로젝트 안에 SwiftUI 뷰 삽입하기 (UIHostingController 이용)

소개 SwiftUI: Representable을 이용해서 UIViewController 띄우기 SwiftUI: 하드웨어 키보드 입력 받기 (Representable 사용) SwiftUI: 웹 뷰(WKWebView) 추가하기 및 자바스크립트 실행 (Representable 사용)   이전에 SwiftUI 프로젝트 안에 UIKit 기반으로 만들어진 뷰 컨트롤러나 뷰를 집어넣는 방법에 대해 여러 차례 포스팅한적이 있었는데, 그 반대의 경우도 가능합니다. UIKit 프로젝트에서 SwiftUI로 만든 View를 삽입하는 더보기…

SwiftUI: Tab View (탭 뷰) 사용하기 기초 (탭 바 형태, 페이지뷰 형태)

소개 SwiftUI의 TabView를 이용해 다음 두 가지 형태의 뷰를 만들 수 있습니다. 탭 바가 있는 뷰 형태 페이지 인디케이터가 있는 페이지 뷰 형태   기본 형태 TabView { MyCustomView() MyCustomView() MyCustomView() MyCustomView() } //.tabViewStyle(.page) //.indexViewStyle(.page(backgroundDisplayMode: .always)) TabView 트레일링 클로저 안에 표시할 뷰를 추가합니다. tabViewStyle은 페이지로 표시할 지, 또는 탭 바 더보기…

SwiftUI: Long Press 처리 (일반적인 경우와 지속적으로 눌렀을때의 경우)

소개 SwiftUI에서 일반 탭 외에 길게 눌렀을때의 동작을 어떻게 처리하는지 알아보겠습닌다. 먼저 Long Press라는 동작에 대한 이해가 선행되어야 합니다. Long Press는 누르는 동안 동작이 지속되지 않습니다. minimum duration(최소 지속 시간)동안 press가 되었다면 계속 누르고 있다 하더라도 minimum duration 후에 최후의 동작 (onEnded)을 1회 실행하고 끝이 납니다. 지금은 사용하지 않는 아이폰의 더보기…

WWDC 23 Swift Student Challenge 수상하였습니다. (Award Recipient)

소개 이번에 애플에서 주최한 WWDC23 Swift Student Challenge(스위프트 스튜던트 챌린지)에 응모하였는데 운이 좋아서 수상하였습니다. 영어로 Award Recipient라고 나와있는데 비공식 용어로는 Winner로 일컫기도 합니다. 사실 작년까지는 이런 공모전이 있는지도 몰랐는데 올해 어떻게 정보를 알게되어 응모하게 되었습니다. Student Challenge에 대한 자세한 내용은 https://developer.apple.com/kr/wwdc23/swift-student-challenge/ 에서 볼 수 있습니다. 이름은 Interval Fairy라는 앱으로, 제작기간은 더보기…

SwiftUI: 웹 뷰(WKWebView) 추가하기 및 자바스크립트 실행 (Representable 사용)

소개 SwiftUI 내부에 웹 뷰(WKWebView)를 추가하는 방법입니다. 원래 웹 페이지를 표시하는 WKWebView는 UIKit과 호환되는 요소인데, 찾아본 결과 SwiftUI에는 웹을 표시할 수 있는 뷰가 없는 것처럼 보여서 역시 Representable을 이용해서 간접적으로 추가하는 방법을 설명하겠습니다.   방법 두 가지 방법을 알아보겠습니다. 단순히 SwiftUI에 웹 뷰를 추가하는 방법입니다. 위 예제의 웹 뷰에서 evaluateJavaScript(_:)를 더보기…

SwiftUI: 하드웨어 키보드 입력 받기 (Representable 사용)

소개 SwiftUI 앱에서 하드웨어 키보드의 입력을 받는 방법입니다. 여기서 하드웨어 키보드란 iOS/iPadOS 환경에서는 USB 키보드, 블루투스 키보드, 액세서리 키보드 등을 뜻하며, Mac Catalyst/M시리즈 CPU 등 맥 환경에서 실행되는 경우에는 노트북의 키보드, 유선 키보드, 블루투스 키보드 등을 뜻합니다. 하드웨어 키보드의 입력에 대한 처리란 이런 키보드에서 키를 눌렀을 때 해야할 작업을 뜻합니다. 더보기…

SwiftUI: 내비게이션 (Navigation) 및 데이터 전달 기초

소개 SwiftUI상에서 내비게이션 (앞, 뒤로 이동하는 뷰들의 집합)을 구현하는 방법입니다. 참고로 iOS 16.0을 기준으로 방법이 매우 다릅니다. 아래와 같은 앱을 만들 것입니다. 3단계 내비게이션이 마련되어 있으며 첫 번째 버튼을 누르면 두 번째 화면으로 이동하며 임의의 색상과 그 색상에 대한 텍스트가 표시됩니다. 두 번째 화면에서는 Go to Jacob Link가 있으며 이 더보기…

SwiftUI: Swift Playgrounds App에서 커스텀 폰트 추가 및 적용

개요 Swift Playgrounds App에서 커스텀 폰트 적용 및 사운드 파일 추가 참고로 여기서 Swift Playgrounds App이란 다음과 같이 Xcode에서 File > New > Project… iOS > Swift Playgrounds App 으로 생성한 프로젝트 및 앱을 뜻합니다.   커스텀 폰트 추가 1) Resources 폴더안에 폰트 파일을 추가합니다. 해당 폴더가 없다면 새로 생성합니다. 더보기…

SwiftUI (Swift Playgrounds App)으로 만든 앱: Chord Diary (코드 감정 기록기)

개요 음악 코드(화음)으로 현재의 감정을 기록해 보세요. 글을 등록하면 코드 음을 재생할 수 있고 해당 코드에 대한 정보도 볼 수 있습니다. (scales-chords.com 사이트 이용)   목적 SwiftUI의 기초 학습 및 상태 관리 학습 목적으로 만들었습니다.   사용 기술 SwiftUI 부분적으로 UIKit 도입 (Representable 사용) Swift Playgrounds App   특징 UserDefaults를 더보기…