UIStatusBar에 현재 앱 상황 보여주기 (트위터 앱처럼..)

트위터 공식 앱에서 트윗 작성을 하면 화면 상단의 UIStatusBar이 가려지면서 “트윗 전송 중”, “전송 완료”라는 글자가 나타났다가 사라진다.
이 부분 처리가 궁금했는데 github에서 관련 코드를 찾았다.

https://github.com/brunow/BWStatusBarOverlay

위 경로에서 받은 코드를 분석하며 구조를 살펴보았는데,
이전에 내가 해보았던 방법과 달랐다… (역시… ㅠㅠ)

일단 위 코드에서 중요한 부분은

UIWindow를 상속받은 클래스이며, window의 level을 UIWindowLevelStatusBar에서 + 1(above)하는 것.
또한 보여주길 원하는 시점에서 window에 올린 UIView를 보여줄 때는 self.hidden = NO로 해야한다는 것이다.

그 외 부수적으로 눈여겨 봐야할 부분은

클래스가 singleton 모델로 구현이 되어 있다는 것 (개인적으로 singleton 모델을 반기지는 않지만 위 코드는 당근 singleton이 맞음!)

이 부분만 염두한다면 코드 보기가 수월할 것이다.

위에서 언급한 부분으로 클래스를 살짝 구현해봤는데 이전에 내가 했던 방법에서 문제가 되었던 부분이 말끔히 해결되었다.
(이전에 구현한 코드의 문제점은 메시지가 나타난 후 push/pop 했을 때 view가 깨지는 문제였다.)

배웠다면 써먹어야지~! 구현한 것 돌아가는 것 살짝 동영상으로 찍어봤습니다. YouTube capture 앱 테스트도 해볼 겸..
영상에서는 상단 Status Bar 변화를 잘 보면 이해하실거라 믿습니다.
부가적으로 keyWindow에 뭔가 올라갔을 때 테스트한 부분도 궁금해서 구현해보았습니다.

 

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.