UIVIewPropertyAnimator을 활용해서 collectionViewCell의 색을 바꾸려고 했다. 그런데 앱이 백그라운드 상태로 갔다가 다시 포그라운드 상태로 돌아왔을 때, 애니메이션이 다 끝난 상태로 되어버리는 버그가 발생을 했다. 이 글에선 버그를 해결한 방법에 대해 설명해보려고 한다. 버그 발생 아래 영상처럼 백그라운드 상태로 갔다가 다시 포그라운드 상태로 돌아오면 애니메이션이 멈춘 상태가 아니라 결과가 나타난 채로 보여진다. 정확히 왜 이런 버그가 발생하는지 이유는 아직 찾지 못했다. 이유는 앱이 백그라운드로 전환되면 iOS는 리소스를 절약하기 위해 애니메이션을 포함한 다양한 작업을 일시 중지하거나 중단하기 때문이다. 따라서 애니메이션의 상태를 관리하여 해결해야한다. 해결 방법..
프로젝트 소개 앱 소개 & 기획 유저가 만드는 영화 퀴즈, 유퀴즈! 당신은 아래의 동영상을 보고 무슨 영화인지 맞출 수 있으신가요?? 그렇다면 퀴즈에 도전해 보세요!https://apps.apple.com/kr/app/uquiz-%EC%9C%A0%EC%A0%80%EA%B0%80-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%98%81%ED%99%94-%ED%80%B4%EC%A6%88/id6479728756 UQuiz - 유저가 만드는 영화 퀴즈TV에서나 보던 영화 포스터의 일부분을 보고 맞추던 게임! 해보고 싶지 않으셨나요? UQuiz를 통해 영화 포스터 맞추기 게임을 해보세요. 2번째 탭을 통해서 직접 문제를 만들 수도 있어요! 업데apps.apple.com기획 계기유튜브 혹은 예능을 ..
Realm은 iOS 앱을 만들 때, 데이터베이스로 CoreData에 비해 쉽게 사용할 수 있는 라이브러리이다. 안드로이드를 비롯해 여러 플랫폼에서 지원하기에 호환성이 좋아서 많은 서비스에서 Realm을 사용한다. 그런데 realm에 복잡한 데이터가 앱을 설치한 처음부터 있었으면 하는 개발자도 분명 있을 것이다. 하지만 이에 관련된 자료가 없는 건지, 내가 못 찾는 건지 찾을 수가 없었다. 그래서 방법을 고민하다가 내가 찾은 방법을 공유해보려고 한다. (+ 에러 상황과 해결 방안까지) 0. Realm 데이터 준비하기 단순한 데이터를 Initial Data로 추가할 때에는 사실 Realm 데이터를 준비할 필요 없이, 코드로 저장을 하면 된다. 그러나 앱에서 저장하는 기능이 많으면 많을수록, 다양한 기능을 사..
· 성취/개선/학습한 내용 🏆 평소에도 가장 약한 부분이 '기본기'라고 생각하고 있었다. 개발에 있어서 가장 기본이 되는 부분들은 개념들이다. 예를 들자면 프로퍼티, 메서드를 비롯해서 프로토콜 등이 있다. 이런 부분들을 정확하게 알지 못해서 항상 다른 사람의 코드를 보았을 때, 앱의 큰 틀인 protocol, class 이런 부분들을 보면 이해가 되지 않았다. 하지만 오늘 Protocol을 비롯해 Extension을 학습하였고, 이를 기점으로 왜 코드가 그렇게 쓰였는지 이해가 되었고, 이를 직접 써봄으로써 체화를 하였다. 오늘의 가장 큰 성취는 기본 개념들을 채우면서 이해가 되기 시작한다는 점이다. 이 경험을 통해 모르는 건 찾아보고 공부하고 넘어가야겠다는 생각을 했다. 몰라도 제대로 공부하지 않았던 지..
사실 개발을 처음 했을 때 git이 굉장히 어려웠다. 따로 가르쳐주는 사람도 없었을뿐더러 터미널에서 하려니 문자만 딱 남겨진 게 굉장히 이해하기도 사용하기도 어려웠었다. 하지만 Git을 사용하는 방법에는 여러 가지 방법이 있다는 것을 알게 되었고, 그중 간단하게 Xcode에서 사용할 수 있는 방법을 남겨보려고 한다. 1. VCSVCS(version control system) -> 파일의 변화를 추적하고 관리하는 시스템. 즉, 버전 관리를 할 수 있는 것이 바로 VCS이다. 그럼 왜 버전 관리를 해야할까?프로젝트 진행 중 과거의 특정 시점으로 돌아갈 수 있기 때문에여러 사람이 같은 프로젝트를 맡게 될 경우, 각자 수정하고 작업한 내용을 간편하게 동기화하기 위해서코드의 변경 사항, 코드 작성자에 대한 추..
UIKit으로 앱을 만들다 보면 프로젝트 파일에 AppDelegate파일과 SceneDelegate파일이 만들어질 때부터 있는 것을 볼 수 있다. 이것이 무엇인지 이번엔 공부한 내용을 기록해보려 한다. 1. AppDelegate AppDelegate는 앱의 생명주기(앱의 실행과 종료 등) 및 UI 라이프사이클(백그라운드 상태 등)을 모두 관리하는 객체였습니다. 이것들을 정리해 보자면 1. Not Running : 앱이 시작되기 전 상태 Foreground 상태2. Active : 앱이 화면에서 실행 중인 상태3. Inactive : 앱이 화면에서 실행 중이나 어떤 신호도 받지 않는 상태(예: 전화받는 화면) 4. Background 상태: 앱이 화면에 보이지 않지만 코드를 실행하고 있는 상태..