[SwiftUI] @Published 썼는데도 View가 안 바뀐다?
·
iOS 개발/SwiftUI
Firebase에서 데이터를 잘 받아왔는데도, SwiftUI View에서는 아무것도 나타나지 않는 상황. 분명히 @Published를 썼는데도 화면에는 변화가 없었다. 왜 이런 문제가 생겼을까?이 글에서는 내가 직접 겪은 오류 상황과, SwiftUI의 상태 바인딩 원리, 그리고 UIKit과의 결정적인 차이에 대해 정리해보겠습니다.❌ 문제 상황현재 ViewModel 구조는 UIKit 개발 경험을 바탕으로 구성을 하였습니다.final class State { struct ViewModels { var todoViewModels: [Todo] = [] } @Published var viewModels = ViewModels()}final class TodoMainViewModel:..
[SwiftUI] Figma 비율 그대로! 개발하는 Constants 구조체 만들기
·
iOS 개발/SwiftUI
📌 들어가며Figma로 디자인한 화면 속 이미지 크기를 그대로 구현하고 싶은데,기기마다 해상도가 달라서 비율이 맞지 않아 고민해본 적 있으신가요? 저는 프로젝트를 하면서 디자이너분께 “피그마대로 정확하게 나왔으면 좋겠어요!” 라는 요청을 정말 많이 받아왔습니다. 하지만 실제 iPhone 기기마다 화면 크기와 Safe Area가 다르기 때문에,디자인대로 보이도록 구현하는 일은 생각보다 까다로운 작업이었죠. Figma 기준으로 많이 사용하는 사이즈인 가로 393pt, 세로 852pt 화면을 기준으로,모든 iPhone에서 디자인 비율을 자연스럽게 유지하는 방법을 찾아서 적용을 해본 결과 아래의 방법이 제일 오차가 적었습니다.🔧 Constants 코드 설명전체코드import Foundationimport U..
[UIKit] 설정 탭 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
state.viewModels = State.viewModels( todoCount: todoCount, memoCount: memoCount, recordingCount: recordingCount)오늘은 나만의 Todo 앱 프로젝트의 마무리를 기록하려 합니다.이번 프로젝트는 UIKit으로 시작했지만, 이후에는 SwiftUI 버전도 구현해볼 생각입니다. 마지막으로 리뷰할 화면은 설정 탭입니다.설정 탭은 복잡한 기능을 넣지 않고, 지금까지 내가 작성한 Todo, 메모, 녹음의 갯수를 간단히 확인할 수 있도록 구성했습니다.📡 데이터 불러오기설정 탭에서는 사용자가 지금까지 작성한 Todo, 메모, 녹음의 개수를 각각 Firestore에서 불러와 보여주도록 구성했습니다.구현 흐름은 다음과 같..
[UIKit] Timer 기능 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
오늘은 제가 직접 만든 Todo 앱에 포함된 Timer 기능을 소개하고 리뷰해보려고 해요.이번 포스팅에서는 총 세 가지 기능을 중심으로 살펴볼게요.⏱ Timer 설정 및 시작❌ Timer 취소⏸ Timer 일시정지 및 재개하나씩 자세히 확인해볼게요!⏱ Timer 설정 및 시작1. PickerView로 시간 선택원래는 UIDatePicker를 활용하려고 했지만, 초 단위까지는 지원하지 않아 원하는 정밀한 시간 설정이 어려웠습니다.그래서 사용자에게 시/분/초를 모두 직접 선택할 수 있도록 UIPickerView를 사용해 커스텀 UI를 구성했습니다.Picker는 세 개의 컴포넌트로 나눴고, 각 요소는 Array(0...59) 또는 Array(0...23)로 구현했습니다. numberOfComponents(in..
[UIKit] 녹음 기능 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
안녕하세요, 오늘은 제가 직접 만든 나만의 Todo 앱에 녹음 기능에 대해 리뷰해보려 합니다. 우리는 흔히 할 일을 텍스트로 적지만, 어떤 순간엔 글보다 말이 더 빠르고 편할 때가 있죠. 특히 이동 중이거나 급하게 아이디어가 떠올랐을 때, 간단히 마이크 버튼을 눌러 말로 기록할 수 있다면 어떨까요? 이번에 구현한 기능은 다음과 같은 흐름을 가집니다:📂 녹음 불러오기: 앱 실행 시 저장된 녹음 파일들을 자동으로 불러와 목록에 보여줍니다.🎙️ 녹음하기: 버튼을 눌러 음성을 녹음하고, 제목과 저장할 수 있도록 구성했습니다.▶️ 녹음본 재생: 녹음한 음성을 목록에서 선택하여 재생할 수 있습니다.🗑️ 녹음 삭제: 필요 없는 녹음은 리스트에서 손쉽게 삭제할 수 있도록 했습니다.이 중 녹음 불러오기 기능은 To..
[UIKit] 메모 기능 구현 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
오늘은 나만의 Todo 앱에서 메모 기능에 대해 간단히 리뷰해보려 합니다.이번 포스트에서는 메모 작성하기, 메모 상세 화면 두 가지 기능에 초점을 맞춰 소개할게요. 저번 포스트에서 다뤘던 Todo 불러오기, Todo 삭제하기, 메모 불러오기, 메모 삭제하기 기능은 로직이 거의 동일하기 때문에 이번에는 생략하겠습니다.혹시 이전 내용을 확인하고 싶다면 아래 링크를 참고해 주세요👇🔗 이전 포스트 보러 가기 [UIKit] Todo 기능 구현 리뷰 (Feat. 나만의 Todo)이번 프로젝트는 ‘나만의 Todo’라는 이름으로 진행해봤어요.앱의 로고도 직접 디자인해서 적용해보았고, UI 구성부터 기능 구현까지 차근차근 UIKit으로 만들어봤습니다. 오늘 블로그에서는 이riu-dev.tistory.com✏️ Mem..
[UIKit] Todo 기능 구현 리뷰 (Feat. 나만의 Todo)
·
iOS 개발/UIKit
이번 프로젝트는 ‘나만의 Todo’라는 이름으로 진행해봤어요.앱의 로고도 직접 디자인해서 적용해보았고, UI 구성부터 기능 구현까지 차근차근 UIKit으로 만들어봤습니다. 오늘 블로그에서는 이 앱의 핵심 기능 중 하나인 Todo 기능 구현 내용을 리뷰하려고 해요!이번에 구현한 Todo 기능은 다음과 같습니다:📥 Todo 불러오기✏️ Todo 생성🗑 Todo 삭제☑️ Todo 체크(완료 여부 토글)기능을 단순히 구현하는 데서 그치지 않고, 실제로 사용해보면서불편한 부분은 계속해서 개선해보는 방식으로 프로젝트를 이어가고 있습니다.그럼 하나씩 자세히 살펴볼게요!🔧 프로젝트 설계 및 구현 방식이번 프로젝트에서는 MVI와 MVVM 아키텍처를 조합하여 적용해보았습니다.데이터 흐름과 뷰 업데이트의 역할을 명확히..
[UIKit] Launch & Onboarding 화면 구현 리뷰 (Feat. 음성메모앱)
·
iOS 개발/UIKit
안녕하세요! 오늘부터는 패스트캠퍼스의 네카라쿠배 iOS 앱 초격차 패키지 Online 강의 중, N사 음성메모앱 파트를 UIKit으로 구현한 내용을 리뷰해보려고 합니다.🛠 강의는 SwiftUI 기반으로 진행되었지만, 저는 UIKit과 SwiftUI 모두 연습하고 싶어 UIKit으로 먼저 구현해보고, 이후에는 피그마만 참고하여 SwiftUI 버전도 따로 제작할 예정입니다!🎯구현 목표오늘은 앱 시작 시 보여지는 Launch 및 온보딩 화면을 UIKit으로 어떻게 구성했는지 리뷰합니다.화면 흐름은 다음과 같습니다:앱 실행ViewController 로드타이틀/서브타이틀 세팅OnboardPageViewController 연결OnboardPageViewController는 4개의 온보딩 페이지 준비사용자는 스와..