네트워크로 데이터를 받아오는 작업과 같이 시간이 오래걸리고, 언제 끝날지 모르는 작업들을 처리할 때, 그리고 그 작업의 결과를 화면에 보여줘야 할때 애플리케이션에서는 작업 진행 중이라는 것을 사용자에게 알려줌으로서 사용자가 작업이 완료될 때까지 기다릴 수 있게끔 유도합니다. 단순히 빙글빙글 도는 인디케이터부터, 퍼센티지를 통해 어느정도 작업이 진행되었는지를 알려주는 progress bar등 다양한 방식으로 앱에서는 사용자 경험을 향상시키고자 노력합니다. 이번 글에서는 그 중에서도 직관적으로 어떤 컨텐츠가 로딩되고 있는지를 표현할 수 있는 스켈레톤 스크린과 그걸 iOS에서 구현한 SkeletonView라는 라이브러리에 대해서 알아보겠습니다. Skeleton Screen 이란? 스켈레톤 스크린이란 화면의 레..
UIViewController의 viewDidLoad는 한번만 호출되기 때문에 이곳에서 View 설정과 같은 ViewController의 초기화 작업을 주로 합니다. navigationController 역시 viewDidLoad에서 자주 다뤄지는 프로퍼티입니다. viewDidLoad에서 아래와 같은 코드를 자주 사용해 보셨을 것 입니다. override func viewDidLoad() { ... navigationController?.setNavigationBarHidden(true, animated: false) } 혹시 이런 상황에서 navigationController가 당연히 있을 것이라고 생각했는데, nil인 경우인 적이 있으신가요? 분명히 navigationController를 통해서 vi..
String format을 사용할 때, 인자들의 순서들이 상황에 따라 다르게 적용되도록 하게 해야 할 때가 있습니다. (다국어 처리 시 시간, 주소의 순서등..) 이를 위해서 Swift format에서는 인자들의 데이터 타입뿐만 아니라 순서 specifier도 제공합니다. 순서 specifier는 "n$" 형태로 사용되며 포맷 specifier와 결합하여 인자들의 순서를 조절할 수 있습니다. 위 코드는 String format에 순서를 적용하는 간단한 예시입니다. SendMessage라는 키 값을 가지는 두 다국어 문자열이 있고 해당 다국어 문자열에는 두 인자를 처리하는 String format이 있습니다. 여기서 1$ 와 2$를 통해 언어마다의 인자 순서를 정의하고 있습니다.