SwiftUI

Shorts UI 구현하기 (SwiftUI+UIViewRepresentable+UICollectionView)
배경유튜브 Shorts, 인스타그램 릴스, TikTok과 같은 숏폼 콘텐츠 UI를 어떻게 구현할 수 있을까요?최근 사이드 프로젝트를 진행하며 Shorts 화면을 담당하게 되었고, 구현하며 마주한 고민들과 기술적인 선택, 그리고 그 안에서 마주했던 문제 해결 경험을 정리해보려고 합니다.요구사항 정의구현에 들어가기 전 먼저 만족해야 하는 요구사항을 아래와 같이 정리할 수 있었습니다.기능 명세는 일반적인 숏폼 컨텐츠를 떠올리며 정의할 수 있었고, 기존 SwiftUI 기반의 앱 구조에 안정적으로 통합되기를 원했습니다.한번에 하나의 영상이 전체화면을 채우는 UI세로 방향 스크롤을 통해 영상 전환 및 페이징 UX스크롤 시 영상 전환이 빠르고 부드러울 것좋아요, 댓글, 사용자 정보 등 오버레이가 가능할 것Swift..

Demystify SwiftUI - Identify: SwiftUI는 뷰를 어떻게 구분할까?
SwiftUI는 뷰를 어떻게 구분할까?SwiftUI는 정체성(Identity)을 통해 뷰를 구분합니다.UIView, NSView를 클래스로 모델링한 UIKit, AppKit과 달리 SwiftUI에선 View를 Struct로 취급하기 때문에 View를 식별하기 위해선 별도의 ID가 필요합니다.정체성은 명시적 정체성, 구조적 정체성 두가지 방식으로 표현될 수 있으며, 명시적 정체성을 부여하지 않더라도 뷰 계층 구조를 활용해 뷰에 암시적인 ID를 부여합니다.명시적 정체성 (Explicit Identity)개발자가 ID 나 Identifiable 프로토콜을 사용하여 뷰나 데이터에 직접 고유한 식별자를 제공하는 방식입니다. ForEach와 같은 데이터 기반 컴포넌트에서 특히 중요하며, SwiftUI가 컬렉션의 항..

번역) SwiftUI 간단한 뷰 레이아웃 구성하기
해당 글은 Apple 공식문서를 번역한 글로 의역이나 잘못 번역된 내용이 있을 수 있습니다.정확한 내용은 원문을 참고해주세요.https://developer.apple.com/documentation/swiftui/laying-out-a-simple-view개요뷰의 레이아웃을 만들려면, 먼저 자식 뷰들의 계층을 구성합니다. 그런 다음, 자식 뷰의 크기와 간격을 설정 파라미터와 frame, padding 같은 뷰 수정자를 통해 조정할 수 있습니다.레이아웃 구성 방식에 대해 더 알고 싶다면 스택 뷰로 레이아웃 만들기를 참고하세요. 뷰 계층 구성하기다음은 메시징 서비스에서 받은 메시지를 표시하기 위한 뷰 예시입니다.이 뷰는 HStack을 사용하여 발신자를 나타내는 뷰와 메시지 내용을 담는 뷰를 나란히 배치합니..

번역) SwiftUI 커스텀 뷰 선언하기
해당 글은 Apple 공식문서를 번역한 글로 의역이나 잘못 번역된 내용이 있을 수 있습니다.정확한 내용은 원문을 참고해주세요.https://developer.apple.com/documentation/swiftui/declaring-a-custom-view#Conform-to-the-view-protocol개요SwiftUI는 사용자 인터페이스 디자인을 선언형(declarative) 방식으로 제공합니다. 전통적인 명령형(imperative) 방식에서는 뷰를 생성하고, 배치하고, 설정하는 책임은 물론, 상태 변화에 따라 뷰를 지속적으로 업데이트하는 책임까지 컨트롤러 코드가 부담합니다. 반면, 선언형 방식에서는 UI의 원하는 레이아웃을 반영하는 뷰 계층을 선언함으로써, 사용자 인터페이스의 *간단한 설명(lig..

SwiftUI 프로젝트에서 AppDelegate, SceneDelegate 사용하기
프로젝트를 생성할 때 SwiftUI를 선택하면 기본적으로 AppDelegate와 SceneDelegate가 생성되지 않습니다. 하지만 아직까지 외부 SDK연결이나 APNs와 같이 AppDelegate가 필요한 상황이 있고,기존 UIKit 에서 SwiftUI 로 마이그레이션하는 과정에 있다면 SceneDelegate에서 SwiftUI 뷰를 UIKit ViewController로 호스팅해 보여주는게 편할 것 같습니다. 그래서 오늘은 SwiftUI로 프로젝트 생성 후, AppDelegate와 SceneDelegate를 만들기, ContentView를 SceneDelegate를 통해 띄우는 것 까지 해보겠습니다. 먼저 SwiftUI 프로젝트를 생성합니다.XCode12 까지는 프로젝트를 생성할 때 AppDeleg..
![[visionOS] Apple Vision Pro 챌린지 Part.3 세션 정리 및 느낀 점](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbMjSsb%2FbtsFMAmbhLh%2FAAAAAAAAAAAAAAAAAAAAADRL5HMVkpdIuEudl_SAvPqA4AvLSN56AtNjTWefU4qu%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DF27xnw2eDv1kV6sKjgEQjo%252FuyAg%253D)
[visionOS] Apple Vision Pro 챌린지 Part.3 세션 정리 및 느낀 점
목차 visionOS만의 다양한 인풋들 SwiftUI와 RealityKit visionOS 에서의 2D 앱 -> 3D 앱 몰입감을 위한 SharePlay 경험 만들기 세션에 참여하면서 느낀 점 visionOS만의 다양한 인풋들 visionOS는 공간컴퓨팅을 위한 OS로 다양한 인풋 유형이 있었습니다. 기존에 웹 개발이나 모바일 어플리케이션을 개발하면서 사용하던 인풋 외에 제스처, 트랙패드, 호버 이펙트 등 많은게 생겨서 신기하네요 3D Entity와 상호작용하는 방법 제스처를 통해 3D 엔터티를 제어할 수 있는데, .targetedToAnyEntity() 라는 API를 통해 대상으로 하는 엔터티를 정할 수 있었습니다. 드래그앤 드롭 서로 다른 윈도우에 떠있는 내 앱과 다른 앱 사이에 데이터를 주고 받을 ..