🚀 SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이) 이 문서는 SwiftUI 환경에서 NavigationStack 사용이 어려운 iOS 버전(16 미만) 또는 특정 UIKit 구조(탭 바) 위로 페이지를 Push 하여 탭 바를 덮도록 구현하는 방법을 설명합니다. 1. SwiftUI 기본 네비게이션의 한계 1.1. iOS 16+의 표준 방식 iOS 16 이상을 타겟팅할 경우, SwiftUI의 네비게이션은 NavigationStack 및 navigationDestination(item:destination:)을 사용하여 UIKit의 Push와 유사하게 페이지를 쌓을 수 있습니다. 🚨 제한: 'navigationDestination(item:desti..
-
SwiftUI ViewModifier와 State 상태 관리 오류
SwiftUI ViewModifier와 StateObject 상태 관리1. 개요SwiftUI에서 탭바 위 등 앱의 최상단(Top VC)에 UIViewController를 띄우기 위해 커스텀 ViewModifier를 사용하는 것은 훌륭한 하이브리드 패턴이다. 하지만 이 때 상태(Reference Type)를 담는 그릇을 잘못 선택하면 좀비 컨트롤러(메모리 누수 및 제어 불가) 버그가 발생한다.2. 문제 원인: @State와 View Identity의 취약성ViewModifier는 일반 뷰(Struct)와 달라서 부모 뷰 계층(View Tree)에서 조건부(if, switch) 변화가 생기면 식별자(Identity)가 상실되고 완전히 파괴되었다가 새로 생성되는 일이 잦다.이때 모디파이어 내부에 @State ..
-
[Swift 6] 싱글톤, Task.detached, 그리고 의존성 주입(DI)에서 만나는 동시성 문제
[Swift 6] capture of self with non sendable type 동시성 문제 Swift 6의 Strict Concurrency 모드가 도입되면서, 기존에 관습적으로 사용하던 코드들에서 많은 컴파일 에러가 발생하고 있습니다. 이번 글에서는 실무에서 가장 빈번하게 마주치는 세 가지 핵심 패턴과 그 해결책을 정리해 봅니다.1. 싱글톤과 가변 상태 (Mutable Global State)가장 흔한 패턴이자, Swift 6에서 가장 먼저 경고를 보내는 것이 바로 **"가변 프로퍼티를 가진 싱글톤"**입니다.🚨 문제 상황final class CustomAlertPopupWindow { static let shared = CustomAlertPopupWindow() // ⚠️ 전역 접..
-
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)개발 환경에서 여러 빌드 설정(Dev, QA, Release)을 사용할 때, 각 환경을 시각적으로 구분하기 위해 다른 앱 아이콘을 설정하는 것은 매우 유용합니다. 이 글에서는 Tuist 프로젝트에서 스킴별로 다른 앱 아이콘을 설정하는 방법을 단계별로 알아보겠습니다.1. App Icon Set 준비하기일반 이미지를 앱 아이콘으로 바로 사용할 수는 없고, Icon Set 형태로 준비해야 합니다.Icon Set 생성 방법Xcode에서 프로젝트의 Assets.xcassets 폴더로 이동좌측 하단 + 버튼 클릭iOS > App Icon 선택생성된 Icon Set에는 다양한 사이즈의 아이콘을 넣을 수 있는 슬롯이 준비되어 있습니다.다..
-
SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이)
🚀 SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이) 이 문서는 SwiftUI 환경에서 NavigationStack 사용이 어려운 iOS 버전(16 미만) 또는 특정 UIKit 구조(탭 바) 위로 페이지를 Push 하여 탭 바를 덮도록 구현하는 방법을 설명합니다. 1. SwiftUI 기본 네비게이션의 한계 1.1. iOS 16+의 표준 방식 iOS 16 이상을 타겟팅할 경우, SwiftUI의 네비게이션은 NavigationStack 및 navigationDestination(item:destination:)을 사용하여 UIKit의 Push와 유사하게 페이지를 쌓을 수 있습니다. 🚨 제한: 'navigationDestination(item:desti..
-
[SwiftUI] 커스텀 ProgressView 만들기 (feat. 특이한 모양 Progress 애니메이션)
SwiftUI에서 제공하는 기본 ProgressView는 간단한 진행 상태를 보여주기엔 편리하지만, 디자인이 조금만 특별해져도 한계에 부딪힙니다. 예를 들어 ㅇ-ㅇ-ㅇ-ㅇ처럼 단계별로 끊어지는 형태의 프로그레스 바를 구현해야 한다면 어떻게 해야 할까요?이럴 땐 직접 그리는 것이 오히려 더 직관적이고 편한 방법이 될 수 있습니다. 이번 글에서는 ZStack과 mask를 활용해 독특한 모양의 프로그레스 뷰를 만들고, 자연스러운 애니메이션까지 구현하는 과정을 단계별로 알아보겠습니다.1단계: 프로그레스 '모양' 그리기가장 먼저 할 일은 프로그레스 바의 전체적인 모양, 즉 '트랙(Track)'을 만드는 것입니다. HStack 안에서 ForEach를 사용해 원(Circle)과 사각형(Rectangle)을 반복해서 ..
리스트 : 콘텐츠가 있으면 최근 5건을 불러옵니다.
-
SwiftUI ViewModifier와 State 상태 관리 오류Swift 2026.02.25 11:27
SwiftUI ViewModifier와 StateObject 상태 관리1. 개요SwiftUI에서 탭바 위 등 앱의 최상단(Top VC)에 UIViewController를 띄우기 위해 커스텀 ViewModifier를 사용하는 것은 훌륭한 하이브리드 패턴이다. 하지만 이 때 상태(Reference Type)를 담는 그릇을 잘못 선택하면 좀비 컨트롤러(메모리 누수 및 제어 불가) 버그가 발생한다.2. 문제 원인: @State와 View Identity의 취약성ViewModifier는 일반 뷰(Struct)와 달라서 부모 뷰 계층(View Tree)에서 조건부(if, switch) 변화가 생기면 식별자(Identity)가 상실되고 완전히 파괴되었다가 새로 생성되는 일이 잦다.이때 모디파이어 내부에 @State ..
-
[Swift 6] 싱글톤, Task.detached, 그리고 의존성 주입(DI)에서 만나는 동시성 문제Swift 2025.11.26 14:29
[Swift 6] capture of self with non sendable type 동시성 문제 Swift 6의 Strict Concurrency 모드가 도입되면서, 기존에 관습적으로 사용하던 코드들에서 많은 컴파일 에러가 발생하고 있습니다. 이번 글에서는 실무에서 가장 빈번하게 마주치는 세 가지 핵심 패턴과 그 해결책을 정리해 봅니다.1. 싱글톤과 가변 상태 (Mutable Global State)가장 흔한 패턴이자, Swift 6에서 가장 먼저 경고를 보내는 것이 바로 **"가변 프로퍼티를 가진 싱글톤"**입니다.🚨 문제 상황final class CustomAlertPopupWindow { static let shared = CustomAlertPopupWindow() // ⚠️ 전역 접..
-
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)Swift 2025.11.24 11:05
Tuist에서 스킴별로 다른 앱 아이콘 설정하는 방법 (Dev/QA/Release)개발 환경에서 여러 빌드 설정(Dev, QA, Release)을 사용할 때, 각 환경을 시각적으로 구분하기 위해 다른 앱 아이콘을 설정하는 것은 매우 유용합니다. 이 글에서는 Tuist 프로젝트에서 스킴별로 다른 앱 아이콘을 설정하는 방법을 단계별로 알아보겠습니다.1. App Icon Set 준비하기일반 이미지를 앱 아이콘으로 바로 사용할 수는 없고, Icon Set 형태로 준비해야 합니다.Icon Set 생성 방법Xcode에서 프로젝트의 Assets.xcassets 폴더로 이동좌측 하단 + 버튼 클릭iOS > App Icon 선택생성된 Icon Set에는 다양한 사이즈의 아이콘을 넣을 수 있는 슬롯이 준비되어 있습니다.다..
-
SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이)Swift 2025.11.06 09:47
🚀 SwiftUI에서 UIKit Push 네비게이션 구현하기 (탭 바 오버레이) 이 문서는 SwiftUI 환경에서 NavigationStack 사용이 어려운 iOS 버전(16 미만) 또는 특정 UIKit 구조(탭 바) 위로 페이지를 Push 하여 탭 바를 덮도록 구현하는 방법을 설명합니다. 1. SwiftUI 기본 네비게이션의 한계 1.1. iOS 16+의 표준 방식 iOS 16 이상을 타겟팅할 경우, SwiftUI의 네비게이션은 NavigationStack 및 navigationDestination(item:destination:)을 사용하여 UIKit의 Push와 유사하게 페이지를 쌓을 수 있습니다. 🚨 제한: 'navigationDestination(item:desti..
-
[SwiftUI] 커스텀 ProgressView 만들기 (feat. 특이한 모양 Progress 애니메이션)Swift 2025.08.19 09:41
SwiftUI에서 제공하는 기본 ProgressView는 간단한 진행 상태를 보여주기엔 편리하지만, 디자인이 조금만 특별해져도 한계에 부딪힙니다. 예를 들어 ㅇ-ㅇ-ㅇ-ㅇ처럼 단계별로 끊어지는 형태의 프로그레스 바를 구현해야 한다면 어떻게 해야 할까요?이럴 땐 직접 그리는 것이 오히려 더 직관적이고 편한 방법이 될 수 있습니다. 이번 글에서는 ZStack과 mask를 활용해 독특한 모양의 프로그레스 뷰를 만들고, 자연스러운 애니메이션까지 구현하는 과정을 단계별로 알아보겠습니다.1단계: 프로그레스 '모양' 그리기가장 먼저 할 일은 프로그레스 바의 전체적인 모양, 즉 '트랙(Track)'을 만드는 것입니다. HStack 안에서 ForEach를 사용해 원(Circle)과 사각형(Rectangle)을 반복해서 ..