[SwiftUI] ObservableObject, ObservedObject, Published
·
🍎 Dev/SwiftUI
회사에서 SwiftUI로 작업을 하고 있지만, 회사 프로젝트 기반인 UIKit의 그늘에서 벗어나지 못 해서 언제나 반쪽짜리 SwiftUI로 작업하는 기분이 들었다. Property Wrapper를 작업 초기에 회사 컨플루언스에 정리하고, 그 글을 다시 이 블로그에 적기도 했는데 그땐 회사에서 검색해도 뭐가 뭔지 몰라서 정의보다도 뜻을 찾아본 느낌이 강했다. 실제로 회사 프로젝트에서 해당 wrapper들을 다 활용하지 못 하기도 했고. 그래서 다시 차근차근 하나씩 간단히 예제 코드를 짜보며 공부해보고 정리하고자 한다. 참고로, wrapper 정리했던 게시글을 아래 링크의 글이다. 거창한 총정리란 타이틀과 달리 정말 정의 의주로 정리된 글이다. https://calliek.tistory.com/54#%C2%..
[직관로그] v.1.3.1 배포
·
🏟️ 직관로그 (출시앱)/업데이트
v.1.3.1에서의 변화 - 작성화면 UIUX 개선- 경기장 추가   날짜변경- 기존엔 날짜 변경이 안 되었는데, 문의사항에 빈도 높게 있던 부분이라 수정했다. 경기장- 경기장 추가는 이전 계획대로 user가 등록하도록 로직을 수정 했다가, 잠시 보류하고 요청 있던 경기장들을 추가하는 걸로 임시로 대체했다. 이건 아마 다음 업데이트에서 진행 되지 않을 까 싶다. 얼럿- 등록을 위한 최소한의 조건을 만족하지 않으면 그때마다 얼럿을 띄웠는데, 사용자 입장에서 성가시고 해당 부분에 대해 글자수를 늘려달라는 등의 문의요청에 고민했다. 얼럿은 경기장 선택 조건 불충족 시에만 띄우고, 나머지는 글자입력수를 텍스트필드에서 지정해놓고, 조건을 충족할 때까지 버튼 비활성화 하는 방식으로 변경했다.- 사실 텍스트필드 색 ..
[직관로그] v.1.3.0 배포
·
🏟️ 직관로그 (출시앱)/업데이트
2024년 8월 26일 약 4개월만에 직관로그의 1.3.0 버전이 배포 되었다.   v.1.3.0에서의 변화1. 탭 변화- 기존 탭 메뉴인 [캘린더, 기록, 날씨]에서 [캘린더, 기록, 통계, 설정]으로 변경 2. 설정 탭 메뉴 변화- 자주 묻는 질문 추가- 앱 버전 추가 -> 현재 버전이 아닐 시 업데이트 유도 버튼 및 화면전환 추가- 기존 문의하기는 이메일을 보내는 형식이었으나, 현재는 구글폼으로 유도 3. SwiftUI 리팩토링- 설정 탭메뉴 + 설정 뎁스 화면은 모두 SwiftUI로 리팩토링- 통계 탭의 요약하기 화면 (툴팁, 이미지옵션필터화면) SwiftUI로 리팩토링 4. 아이콘 변경- 무료 아이콘이 아닌 직관로그라는 앱에 맞게 외주 맡긴 커스텀 디자인 아이콘 5. 마이너 수정- 캘린더의 날짜..
[SwiftUI] Infinite Carousel 구현하기 1 (feat. Timer)
·
🍎 Dev/구현
프로모션 팝업 화면을 담당해서 만들었는데, 무한 스크롤(이미지 배열 순환) + 타이머 작동이 가능토록 구현을 해야했다. - 내가 구현하고자 한 것: 1. 첫번째 인덱스 이미지에서 왼쪽으로 스와이프 하면 마지막 인덱스 이미지가 나오고, 마지막 인덱스에서 오른쪽으로 스와이프하면 첫번째 인덱스 이미지가 나오는 무한 순환 구조의 스크롤2. 별도의 제스처가 없으면 3초마다 이미지 변경 + 이미지 배열 순환3. 유저가 수동으로 스와이프 시 배열 순서에 맞게 이미지 변경 + 인디케이터 변경 - 내가 겪은 것: 1. 타이머 조절이 되지 않아서 이미지를 반만 스와이프 했을 때 반씩 나온 이미지들이 이전/다음 이미지로 변경 + 타이머 작동2. 수동으로 스와이프 해서 타이머 멈추게 했을 시 다시 작동이 되지 않는 이슈 --..
[SwiftUI] scrollTargetLayout과 ScrollTargetBehavior
·
🍎 Dev/SwiftUI
iOS 17이전까지 ScrollView를 활용할 때 제한적인 부분이 많았다. 특히 오프셋을 직접 구현해서 페이징 기능을 커스텀으로 만들어야한다는 불편함이 있었는데, 애플에서 scrollTargetLayout과 scrollTargetBehavior를 iOS 17때 추가해주어서 이제 코드 단 두 줄로 구현이 가능해졌다.  우선, 해당 기능에 대해 애플문서로 간략하게 알아보자.   scrollTargetLayout은 스크롤 타겟으로 설정할 레이아웃을 정하는 역할을 해준다. ...라고 쓰려니까 이게 무슨 소리야, 싶은데 이 메서드는 스크롤 액션이 이루어질 때 어떤 레이아웃을 기점으로 스크롤이 이루어질지 정해준다. 그리고 scrollTargetLayout은 단독으로 쓰이지 않고, 대신 ViewAlignedScro..
[SwiftUI] pagerView 만들기 (iOS 버전대응)
·
🍎 Dev/구현
회사에서 참여중인 프로젝트에서 스크롤뷰로 구현되어 있던 부분에 페이징 기능을 추가해달라는 기획서 수정이 있었다.UIKit으로 구현되어 있었으면 UIPageViewController를 사용하면 되겠지만, 프로젝트를 SwiftUI 중심으로 작업 중인 상황이라 생각보다 기획서대로 개발하는 게 까다로웠다. 까다로웠던 이유는 두 가지가 있었는데, 1. SwiftUI의 ScrollView는 커스텀이 제한적이라는 점2. 회사 프로젝트의 최소 버전이 15이상인 점 때문이었다. 그래도 iOS 17이상부터 애플에서 ScrollView의 기능을 대폭 추가 및 개선 해주어서 17 이상부터는 사실상 문제가 없었는데, 문제는 ScrollView의 버전대응이었다.     https://developer.apple.com/suppo..