사람들은 자신의 예상을 벗어나기 전까지는 앱의 네비게이션을 인지하지 못하는 경향이 있다. 개발자는 이러한 방식으로 네비게이션을 구현해야 한다. 공기처럼 자연스럽게 사용자가 자기가 원하는 정보까지 접근하도록 도와야 한다.
네비게이션은 세 가지 방식이 있다.
계층적 네비게이션 : 데이터가 계층화되어있고, 그 데이터를 뚫고 들어가는 것. 메인 - 옵션 - 뮤직 - 클래식 - ...
평면적 네이게이션 : 영어과목, 수학과목, 사회과목처럼 서로 연결되어져 있지 않는 컨텍스트를 묶는 것, 멀티플 카테고리
콘텐츠(경험)주도적 : 게임과 책처럼 어떤 컨텐츠가 또 다른 컨텐츠로 자유롭게 연결되어져 있는 것을 의미한다. immersive한 경험을 제공하는 앱에서 주로 사용한다.
논리적 예측가능 쉽게 따라갈 path!
Multiple context가 필요하다면 모달을 사용해라. 최소한의 탭 수!!! 가장 적은 태핑으로 원하는 정보를 가져갈 수 있도록 하자.
기본 네비게이션으로 충분히 직관적인 경험를 제공할 수 있다. 지나친 커스텀은 OS 업데이트의 유익을 못받는다.
UI는 content를 위한 도구일 뿐이다. 우리 content를 계층화하고 그걸 나타내기 위해서 네비게이션바를 사용해보자. title과 backbutton이 우리의 현재 장소, 이전 장소를 알려줄 것이다.
현재 위치와 관계없이 원하는 카테고리에 빠르고 쉽게 접근할 수 있다. 서로 관계성이 없는 동일한 계층의 데이터의 경우 tab bar가 유용하다.
하지만 페이징하는 것도 10개 넘지 않아야 한다. 넘으면 테이블뷰로 리스트해서 누르면 넘어가는 방식이 더 낫다. (책은 다르다)
세그먼트과 툴바는 네비가 안된다. 세그먼트는 탭바보다 조금 작은 단위로 해야 할 때 사용한다. 네비게이션 바의 확장으로 봐야 한다.
네비게이션 역시 iOS 앱 개발의 필수요소다. 코디네이터 패턴, VIPER의 Router, RxFlow 등과 함께 앱의 구성요소로서 독립적으로 관리될 수 있고 그만큼 뷰의 큰 부분을 차지한다. 유저와의 상호작용이 가장 많이 일어나는 작업이자, 우리 앱이 가지고 있는 content를 효율적으로 보여줄 수 있는 방식이기도 하다. 공기처럼 작동하도록, 정확한 데이터 구조를 보여줄 수 있도록 잘 기획해서 사용하는게 중요하다.
Apple Human Interface Guideline
https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/navigation/