기존에 사용하던 토스트UI 라이브러리는 사용하기는 편했으나, 커스텀을 하거나 SwiftUI환경에서 사용하기 어려웠다. 라이브러리 자체가 UIView에 뷰를 추가하는 방식이였기 때문이다.
요즘같은 UIKit과 SwiftUI를 쓰까쓰는 시대에서 새로운 라이브러리가 나왔으면 좋겠다고 느껴졌다. 그래서 직접(...!) 토스트 라이브러리를 만드는 와중에, 그 라이브러리의 작동원리가 무엇인지 적어보도록 하겠다.
궁금하시다면.. : ToastSwiftUI
iOS 2.0 부터 있었던 아주 오래된 녀석이다. 설명을 한국어로 번역하자면,
앱의 사용자 인터페이스의 배경이자 뷰에 이벤트를 전달하는 객체.
UIWindow는 그 자체로 뷰를 제공하지는 않는다. UIView를 연결하여 사용자에게 화면을 보여주고, 사용자의 입력이나 이벤트를 뷰에 전달하는 역할을 하게 된다. UIView를 상속받고는 있지만, 보통 우리가 생각하는 뷰의 역할을 하진 않는 것이다.
보통 스토리보드가 아닌 Code Base로 작성하게 될때 Scene Delegate에서 window에 최초 뷰컨을 집어넣어 작성해보았을 것이다.
애플 공식문서에서도 다음과 같은 문구가 있다.
Create additional windows (as needed) to display additional content.
필요하면 window를 더 만들어 사용해보라는 것이다.
iOS 13부터 SceneDelegate가 나오면서 하나의 앱에는 하나의 window만을 가진다 라는 법칙이 깨졌다.
이 점을 이용하여 한번에 두개의 Window를 띄울 수 있는 점을 이용하여 Toast 라이브러리를 만들어 보려고 한다.
테스트는 매우 잘된다!
일단 기본적인 패러다임은,
이 라이브러리를 만들면서 타 라이브러리보다 좋을 것이라고 예상하는 지점은,
여담으로 지금 앱 만드는것보다 이게 너무너무 재미있어서 도파민이 폭발한다. 정말 잘 만들고 싶은 욕구가 샘솟아서 열심히 만들어볼 예정이다.