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 변화를 잘 보면 이해하실거라…

가로 타임라인 인디케이터 (Horizontal Timeline Indicator)

핀터레스트에 올라온 UI/UX 관련 자료를 들여다보다가 문득 이런 것이 있으면 어떨까하고 구현하기 시작했습니다. 제목은 Horizontal Timeline Indicator 로 적었는게 이름만 거창하지 단순한 컨셉입니다.   간단히 그려본 기능 정의서입니다. (영문이 다소 잘못 쓰이거나 틀렸더라도 양해부탁드립니다 ㅠㅠ) 화면의 각 섹션은 편의상 색상으로 구분했으며 구성 목적상 세션이라고 표현하겠습니다. (몸담고 있는 회사의 H3 2012 iOS Client 에 적용해볼까해서 만들기 시작했습니다.) 전체는 첫 번째 세션의 시작시간부터 마지막 세션의 끝나는 시간까지를 나타냅니다. 타임라인 위에는 전체 시간 중에서 현재 시간을 나타내는 인디케이터(Indicator A)와 사용자가 터치한 곳의 정보를 보여줄 인디케이터(Indicator B)가 존재합니다. 사용자가 터치를 시작했을 경우에는 터치 후(touchedBegan) 손가락의 움직임(touchedChanged)에 따라 따라 Indicator B가 움직이며 위치한 시간을 알려주는 인디케이터가 나타납니다. (최종적으로는 세션 제목을 보여줄 생각입니다.) 터치가 끝나면(touchedEnded) 움직이던 Indicator B가 Indicator A로 이동하면서 사라집니다. 이 컨트롤러는 drawRect:를 사용해서 각 세션에 색상을 입히는 코드와 UIPanGestureRecognizer를 이용하여 터치 시작/변화/끝을 정의하였고 아날로그 시계 역시 drawRect:를 이용하였으며 drawRect:를 호출하기 위해 [self setNeedsDisplay] 메소드 호출 방법을 사용하였습니다. 현재는 인디케이터에 아날로그 시계만 배치하였지만 여기에는…