요즘 사람들을 모아서 오토레이아웃 스터디를 하고 있다.
아이폰 기본 어플을 정해 일주일동안 화면을 구현하고 있다.
1주차 어플은 설정과 디스플레이 설정 화면였다.
그 과정에서 Large Title
에 대해서 알게 되었고, 화면을 구현하던 중 내가 겪었던 상황을 공유하고자 Large Title
에 대해서 알아보고 포스팅한다.
왼쪽처럼 "Settings"가 크게 있고 오른쪽처럼 스크롤하면 navigation bar
에 "Settings"가 title로 되도록 하는 방법을 알아보자.
왼쪽처럼 Navigation Controller
를 이용해 화면을 만들어봤다.
이 상태로 실행하면 오른쪽과 같은 화면을 볼 수 있다.
이제 설정화면처럼 만들어보자
navigation controller
에서 navigation bar
를 설정할 수 있다.
navigation bar
를 클릭하면 오른쪽 창에서 Prefers Large Titles
옵션을 볼 수 있다.
이 옵션을 설정하면
우리가 원하던대로 나오는 것을 확인할 수 있다.
Prefers Large Titles
프로퍼티에 대해서 알아보자.
공식 문서를 먼저 봐보자.
title을 크게 표시해야하는지 여부를 가지고 있는 프로퍼티
흠... 그러니까 prefersLargeTitles
는 title을 크게 표시하려면 해당 프로퍼티를 사용해야하는군.
좀 더 자세히 봐보자.
해당 프로퍼티가
true
라면navigation bar
에 표시하지 않고 큰 글꼴을 사용해서 표시할 수 있다.
largeTitleDisplayMode
를 통해 title을 어떻게 표시할지 구성할 수 있다.
해당 프로퍼티가false
라면navigation bar
에 인라인으로 표시된다.
흠... 그럼 title을 크게 표시하려면 prefersLargeTitles
를 true로 하면 되는군!
근데 largeTitleDisplayMode
를 통해 title을 어떻게 표시할지 구성할 수 있다고 한다!
한 번 알아보자.
공식 문서를 먼저 봐보자.
navigation bar
에 title을 표시하는 모드
흠... 그럼 어떤 모드가 있는지 한 번 확인해보자.
Large Title을 사용할 수 있는 경우
largeTitleDisplayMode
프로퍼티는navigation bar
에 title이 표시되는 방식을 컨트롤한다.
이 프로퍼티의 기본값은UINavigationItem.LargeTitleDisplayMode.automatic
이다.
automatic
은 이전에 표시된navigation item
과 동일한 display mode를 갖는다.
이 프로퍼티를 변경하여 title의 display mode를 변경할 수 있다.
always
는 title을 크게 표시할 수 있다.
never
는 title을 작게 표시할 수 있다.
해당 프로퍼티는prefersLargeTitles
가false
라면 효과가 없다.
(navigation item
의 title이 항상 작게 표시된다.)
Large Title이 설정되어 있는 설정 화면에서 "General" 메뉴를 들어가보자.
"General" 메뉴 화면에서는 Large Title이 설정되어 있지 않다.
위의 largeTitleDisplayMode
를 사용해서 설정해보자.
이렇게 화면을 설정하면
첫번째 화면과 두번째 화면 모두 Large Title
임을 확인할 수 있다.
두번째 화면의 Large Title의 Display Mode
가 automatic
으로 설정되어 있어 첫번째 화면의 Large Title 여부를 따라가게 된다.
always
는 title을 크게 표시할 수 있다.
이번에는 두번째 화면의 Display Mode
를 always
로 설정해보자.
위의 그림에서 왼쪽과 오른쪽 두번째 화면 모두 Display Mode
를 always
로 설정했다.
그런데 화면 결과는 다르게 나타나는데 어떤 차이가 있을까?!
왼쪽에서는 첫번째 화면에 Large Title
이 적용되어 있다.
Large Title
trueDisplay Mode
alwaysalways
는 title을 크게 표시한다고 했으므로 두번째 화면에도 Large Title임을 확인할 수 있다.
오른쪽에서는 첫번재 화면에 Large Title
이 적용되어 있지 않다.
Large Title
falseDisplay Mode
always왼쪽과 동일하게 always
인데 왜 Large Title이 아닐까?
위에서 Display Mode
를 설명하면서
해당 프로퍼티는
prefersLargeTitles
가false
라면 효과가 없다.
위와 같은 얘기를 했다.
그렇다면 우리가 두번째 화면에 title을 크게 표시하는 always
를 지정했음에도 Navigation Controller
에 prefersLargeTitles
가 false
임으로 Large Title이 적용되지 않는다.
never
는 title을 작게 표시할 수 있다.
이번에는 두번째 화면의 Display Mode
를 never
로 설정해보자.
첫번째 화면은 Large Title이고, 두번째 화면은 Large Title이 아님을 확인할 수 있다.
물론, 여기서도 prefersLargeTitles
를 false
로 지정한다면 두 화면 모두 Larget Title이 적용되지 않을 것이다.
오늘은 스터디를 진행하면서 알게된 점을 정리해봤다.
Large Title은 나도 잘 몰랐던 부분인데 이번 기회에 알게되었다.
그럼 이만👋