[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..
[HIG] Accessibility (접근성)
·
🍎 Design/HIG
접근성- 애플의 접근성 기능은 사람들이 애플 기기를 사용할 때 개인 상황에 맞추어 개인화하여 이용을 보다 더 편리하게 사용할 수 있게 지원해주는 역할을 함. - 특히 접근성은 '장애'를 고려해서 개인화를 할 수 있는데, 애플이 접근성을 고려하려는 이유가 대략 7명 중 한명은 장애를 갖고 있으며, 사람들은 선천적 장애 외에도 일상에서 경도가 다른 일시적 장애나 불편을 겪을 수 있기 때문이다. 애플의 접근성 개인화는 개인의 장애가 기기 사용에 주는 영향을 최대한 줄여주고자 한다. 모범 사례애플은 다음과 같은 항목을 접근성 모범 사례로 명시했다. 1. 접근성을 고려한 디자인접근성은 단순히 장애를 가진 사람들이 사용할 수 있게 하는 것이 아니다.어떠한 장애나 상황과 상관없이 "모든" 사람들이 사용할 수 있게 하..
[직관로그] v.1.3.x
·
🏟️ 직관로그 (출시앱)/업데이트
0. 업데이트 예정예상 작업기간: 24.07 ~ 24.08 - SwiftUI 리팩토링: 회사 입사 후 첫 달 빼곤 모두 SwiftUI로 작업하는 바람에 어느새 스유가 더 편해지고 말았다. UIKit로 개발한 직관로그를 시간이 조금 걸리더라도 스유로 리팩토링하기로 했다. - UIUX 리뉴얼: 이번 업데이트의 가장 큰 변화는 UIUX가 아닐까 싶다. 혼자서 기획, 개발, 디자인을 한 앱을 출시했단 점에서 스스로 자랑스러웠으나, 그 당시엔 이렇게 사용자가 많아질 줄 몰랐다. 그래서 사용자가 천 여명이 되었을 때부터 디자인이 너무 마음에 들지 않아서 + 디자인 이슈와 관련된 문의사항이 접수 되면서 UI를 꼭 리뉴얼 하고자 했었다. 마침 좋은 기회로 디자이너분과 6월달쯤부터 함께 작업하게 되어서 현재 UIUX 수..
[SwiftUI] Property Wrapper 총정리
·
🍎 Dev/SwiftUI
PropertyWrapper 정의Swift 5.1 버전부터 도입된 문법정의된 property가 있을 때 해당 property를 감싸서 특별한 타입으로 만들어준다프로퍼티를 저장하는 코드와 프로퍼티를 선언하는 코드를 관리하는 그 경계를 나눠주는 기능을 추가해주는 역할사용자가 별도의 코딩 없이 어노테이션만 선언해도 뷰에서 수정이나 읽기가 가능하도록 캡슐화를 대신해주는 역할사용이유프로퍼티의 접근을 특정 로직을 통해 제어할 수 있게 함. —> 중복 코드를 인스턴스로 빼내기 때문에 중복을 줄일 수 있음.특정 행동을 정의하는 타입을 만드는 것. 특히, 같은 get-set을 활용하는 반복되는 로직을 재사용 해야할 때 PropertyWrapper로 정의하고 해당 로직 자리에 사용하면 동일한 로직을 수행하기 때문에 중복코..