본문 바로가기

SwiftUI19

[날씨의 i] WidgetKit 3탄! - 위젯 사진 설정 (AppExtension, AppGroup, Realm 연동, GeometryReader 활용해 위젯패밀리 크기 대응하기 새로 시작한 위젯을 하나하나 만들어가며..! 어느정도 통신을 하고, 화면을 그리도록 만들었습니다! 그런데 화면을 그리면서 크게 세 가지 문제점이 있었는데 1. 위젯이 원래 앱에서 저장된 파일 URL 경로를 찾지 못한다 2. 위젯이 큰 사이즈의 사진을 지원하지 않는다는 점과 3. 유저가 설정한 사진에 따라 날씨 표시되는 부분의 레이아웃이 변경되는 문제였습니다. 우선 1번으로 스트레스를 많이 받았는데요... 앞서 NotificationCenter를 사용할때 realm으로 저장한 사진을 FileManager로 URL을 저장하고, 알림 설정 트리거를 보낼때 URL을 같이 보내 사진을 접근할 수 있도록 만들었습니다. 그 방법 그대로 사용을 했는데 이상하게 위젯에서는 파일URL에 접근을 잘 못했습니다ㅠㅠ 분명 원래.. 2023. 9. 14.
[날씨의 i] WidgetKit 2탄! (서버와 데이터 연동하기, 위젯 구성하기) 험난했던 AppGroup과 UserDefaults 세팅을 끝내고 본격적으로 위젯을 구성해보겠습니다. 우선 WidgetKit의 SwiftUI는 제가 평소에 하던 것과 조금 달라서 헷갈렸었는데요 차근차근 정리해보겠습니다. 우선 WidgetBundle로 메인 위젯을 설정합니다. 저는 일단 LiveActivity는 제외하고 기본 위젯으로만 구성해보려 합니다! 위젯은 크게 TimelineEntry Provider Widget 으로 구성되어 있습니다. 셋 다 프로토콜인데요, 첫번째로 TimelineEntry는 date를 필수 프로퍼티로 가지는 프로토콜입니다. 위젯을 업데이트하는데 기준이 되는 시간과, 위젯에 표시할 컨텐츠를 설정합니다. 저는 위젯에 그려줄 데이터들을 함께 구성했습니다. 두번째로 Provider는 위.. 2023. 9. 10.
[날씨의 i] 첫 WidgetKit 도전..! 험난했던 시작 (WidgetKit 추가와 AppGroup설정, UserDefaults로 데이터 공유) 안녕하세요! 최근에 날씨의 i를 출시하고 소소한 기능 개선과 버그 픽스를 하며 보냈습니다:) 완성하고 어느정도 업데이트로 앱이 안정되다보니 조금 느슨해져서 뭘 할까..하다가 SwiftUI 스터디에 가입하고 오랜만에 SwiftUI를 해보자! 마음먹었습니다ㅎㅎ 초기에 날씨앱을 만들자고 생각할때 위젯은 필수로 있어야 된다고 생각했었는데요 UIKit 위주로 만들다 보니 SwiftUI만 사용해야하는 위젯킷은 왠지 뒤로 계속 미루었던거 같네요ㅠㅠ 오랜만에 하는 SwiftUI.. 재미있겠다! 하고 WidgetKit을 추가하는 순간 제가 알던 SwiftUI가 아니라 이상한 코드들이 있어서 멘붕에 빠졌습니다. 덕분에 일주일동안 공식문서부터 차근차근 시작해 위젯킷을 공부하고, SwiftUI도 복습하고, 다양한 시행착오를 .. 2023. 9. 10.
[날씨앱] 서버 API를 받아오는 동안 로딩 화면 구현 (Lottie) 날씨앱을 만들면서 날씨 API를 동시에 4~5개를 요청해야되기 때문에 그 동안 애니메이션으로 로딩뷰를 만들어서 유저들이 조금 덜 심심하게 해야겠다고 구상했었습니다! 저번에 SwiftUI로 부트캠핑을 만들었을때에도 로티를 활용해서 로딩 애니메이션을 만들었었는데 반응이 좋았어서 이번에도 로티를 활용해 날씨 애니메이션을 적용해보려 합니다. 적용하면서 SwiftUI와 UIKit과 차이점 등등 비교해보면서 만들어 볼게요! (저번에 적용했던 귀여운 마시멜로 로티 뷰) 우선 https://lottiefiles.com 에 접속해 마음에 드는 애니메이션을 다운로드하고, 프로젝트에 끌어당겨 추가합니다. LottieFiles: Download Free lightweight animations for website & app.. 2023. 6. 29.
[날씨앱] 정확한 날씨 데이터를 찾아서... (Apple WeatherKit) 예전부터 아이폰을 오래 써왔지만 마음에 드는 날씨앱이 없어서 나중에 앱개발을 하게 되면 만들어봐야지~하고 생각하고 있다가 UIKit 개일 프로젝트를 날씨 앱으로 만들어보게 되었습니다! UIKit에 mvvm아키텍처, SnapKit과 Then을 사용해서 코드베이스로 UI를 만들어보고, RxSwift를 활용해 비동기 처리를 하려고 합니다! 여러 고민이 있었지만 날씨앱에서 가장 중요한! 날씨 API를 뭐를 사용할까 하다가 1. 기상청 2. WeatherKit 이렇게 두 개로 좁혔습니다. WeatherKit은 개발자 계정이 있어야 사용가능한데, 저는 이미 부트캠핑을 배포하면서 개발자 계정에 가입된 상태라 사용활 수 있었습니다! (공식 홈페이지) https://developer.apple.com/kr/weather.. 2023. 6. 15.
[부트캠핑] 스켈레톤뷰 애니메이션 넣기, 1.1 업데이트 성공! (SDWebImage) 부트캠핑앱은 인스타그램처럼 사용자들이 캠핑장에 가서 찍은 사진을 공유하는 앱이기 때문에 이미지 처리가 중요했습니다! 저희는 유저의 사진을 Firebase Storage로 올리고, 올린 이미지의 imageUrl을 받아서 사용하는 구조입니다! 처음 프로토타입때는 SwiftUI에 기본으로 있는 AsyncImage()를 사용했었는데요, 써보니 로딩 속도가 느리고, 이미지 캐싱도 따로 해줘야해서 mvp부터는 제가 좋아하는 라이브러리인 SDWebImage를 활용해서 이미지를 처리했습니다! 사용법이 간편하기도 하고, 이미지 캐싱도 자동으로 해주기 때문에 같은 이미지를 여러번 부르지 않아 서버 요청도 줄일 수 있어서 Firebase 무료요금제를 사용하는 저희에게는 너무나 좋은 라이브러리라고 생각했습니다ㅎㅎ https:.. 2023. 6. 10.