본문 바로가기

SwiftUI19

[날씨의 i] WidgetKit 5탄! - iOS17에서 변경된 사항 적용하기 (2.1 버전 업데이트 완료!) 안녕하세요! 날씨의 i를 출시하고, 벌써 7번째 업데이트를 했는데요, 2.1버전 업데이트 과정을 공유하려 합니다. 최근에 아이폰 15 플러스로 폰을 바꾸고 대 만족하며 즐겁게 사용하고 있었는데요! 한 가지 스트레스 받는 일이 발생했습니다! 즐겁게 폰을 세팅하면서 날씨의 i를 다운받고, 위젯을 설치했는데요! 음..? 이상하게 양쪽 사진이 잘리는 현상을 발견해서 부랴부랴 핫픽스를 하게 되었습니다! 알고보니 iOS17로 업데이트되면서 위젯API가 변경이 되었었고, 기존 코드를 수정하게 되었습니다! 역시 iOS16을 쓰던 아이폰 11에서 폰을 바꿔서 다행이지 영영 모를 뻔 했는데 다행입니다ㅎㅎ 처음에는 위젯 API가 변경된 지 모르고 단순히 패딩이나 프레임 문제일거라고 생각했습니다. 그런데 기존 코드에서 Geo.. 2023. 11. 10.
[SwiftUI 스터디] UIViewRepresentable: SwiftUI에 UIKit 뷰 연동! https://developer.apple.com/documentation/swiftui/uiviewrepresentable UIViewRepresentable | Apple Developer Documentation A wrapper for a UIKit view that you use to integrate that view into your SwiftUI view hierarchy. developer.apple.com 이전에 SwiftUI 프로젝트를 할때 이미지를 확대하고 스크롤하는 기능을 넣고 싶었는데 SwiftUI의 MagnificationGesture()가 저희가 일반적으로 사용하는 사진 확대 후 시점이동이 안되서 고민하던 중 UIKit의 뷰를 SwiftUI에 적용할 수 있는 UIViewRep.. 2023. 10. 15.
[SwiftUI 스터디] Swift 5.9 Observation 며칠전에 어느때와 다름없이 앱스쿨 저녁반에서 놀고있는데 튜나센세가 SwiftUI로 간단한 앱을 만들고 계시더라구요 신나게 구경하고 있는데 이번에 새로 나온 Observation을 사용하시는거에요! 굉장히 간단하고 편해보이더라구요 그래서 이번엔 Observation에 대해 공부해보았습니다! https://developer.apple.com/documentation/observation Observation | Apple Developer Documentation Make responsive apps that update the presentation when underlying data changes. developer.apple.com 기존의 ObservableObject를 marco를 통해 @Obser.. 2023. 10. 8.
[SwiftUI 스터디] Combine, URLSession, dataTaskPublisher를 활용해 Github 유저 프로필 가져오기 안녕하세요~! 요즘 즐겁게 SwiftUI 스터디를 하고 있는데요ㅎㅎ 이번주는 뭘 공부할까 하다가 날씨의 i 2.0 업데이트에서 WidgetKit을 처음 적용할때 컴바인을 활용했었는데 위젯이 업데이트될때 새로운 데이터를 받아오지 못하는 이슈가 있었습니다. 결국 기존에 익숙하게 사용하던 URLSession으로 리팩토링해서 업데이트 했던 생각이 나서 이번엔 SwiftUI에서 Combine을 활용해 데이터를 받아오는 연습을 해보려 합니다. 연습하기 좋을 API가 뭐가 있을까 하다가 개발자라면 항상 사용하는 깃허브 API를 활용해 화면에 그려보자! 생각하게 되었습니다. 우선 제 아이디로 깃허브 API를 검색해보니 이렇게 잘 나오는 모습을 볼 수 있었습니다! 이 JSON을 참고해 간단하게 앱에서 사용한 모델을 만들.. 2023. 9. 23.
[날씨의 i] 쌓여가는 앱 용량..realm 데이터와 iOS 데이터 확인하고 임시파일 삭제하기 (Realm CRUD, RealmStudio, iOS FileManager, tmp) 위젯을 모두 완성하고..! 즐거운 마음으로 2.0 업데이트를 신청하려 하는데 앱 용량이 궁금해서 확인해보니 400MB..?였습니다?? 그렇게 큰 앱이 아닌데 이상하다..해서 내부를 살펴봤습니다. 앱 용량은 익스텐션을 3개나 활용해서 이전보다 늘어났을 수 있다고 해도 문서 및 데이터가 52.6MB..?로 생각보다 많이 데이터가 있었습니다. 위젯을 개발하면서 테스트하기 위해 여러 사진을 설정했었는데 그 사진들이 지워지지 않고 앱 안에 쌓여있나..? 해서 새로운 사진을 몇 장 설정해보았습니다. 그랬더니 이렇게 바로바로 용량이 쌓이고 있었습니다ㅎㅎ realm에서 업데이트할때 기존의 사진을 대체하는 메소드를 만들어서 사진이 한 장씩 계속 바뀐다고 생각했는데 잘 못 만들었나..? 생각하며 코드를 다시 확인했습니다... 2023. 9. 18.
[날씨의 i] WidgetKit 4탄! - 위젯 TimelineProvider 이해하기, 위젯 새로고침, 날씨 서버와 통신하기 (2.0 업데이트 도전~!) WidgetKit 시리즈의 마지막입니다! 위젯... 정말.. 쉽지 않았습니다... 그래도 어느정도 생각한대로 앱을 구성하고, 현재 2.0 업데이트 심사도 요청한 상태라 어느정도 후련한 마음입니다! 부디 한번만에 앱이 통과되길! 우선 이전에 Combine으로 코드를 구성했었는데요! 앱이 데이터를 가져오고, 오류없이 동작하기는 하나 일부 화면이 새로 안 그려지는 치명적인 문제가 있었습니다..! 아직 왜 그런지 원인을 찾지 못했는데 아직 Combine에 대한 이해가 부족한 것 같아서 더 공부한 뒤에 다시 도전해보려 합니다. 일단 앱 업데이트를 해야하니 제게 익숙한 방식인 CompletionHandler로 리팩토링하니 다행히 잘 동작했습니다! 우선, 위젯에서 위치정보를 수집하고 동작하는것은 아이폰에 부담을 줄 .. 2023. 9. 17.