-
Notifications
You must be signed in to change notification settings - Fork 1
[UIKit] 왜 네비게이션 타이틀이 Large가 아닌 small로 나오는 걸까?
Ari edited this page Jul 24, 2022
·
1 revision
분명 네비게이션 바를 전역적으로 설정해서 prefersLargeTitles 프로퍼티를 true로 할당해주었는데, 이상하게 RxSwift로 뷰 바인딩 처리를 하면 아래같은 현상이 나타났다.
밑으로 스크롤을 해야만 큰 사이즈의 네비게이션 타이틀이 나타났다.
왜 자동으로 small 사이즈로 스크롤 되어 뷰가 나타나는지 원인 분석을 하기 시작했다.
- 뷰 바인딩 처리를 할 때 혹시 레이아웃을 건드리는 지점이 있나 확인해보았지만 전혀 없었다.
- 스크롤 문제인건가 싶어서 스크롤을 맨 위로 지정해주는 작업도 시도해보았지만 효과가 없었다.
그러다가 찾게된 방법....
해결 방법
네비게이션 바에는 sizeToFit() 이라는 메소드가 존재한다.
- UIKit에 포함된 특정 뷰를 자체 내부 요구 사이즈로 resize 해주는 함수이다.
- 그래서 기존의 설정 값인 Large Title 사이즈로 네비게이션 바를 리사이즈 해준다.
따라서 이 메소드를 활용해서 해결해보기로 했다.
- 처음에는 네비게이션 아이템을 설정할 때 sizeToFit을 호출해보았는데, 간헐적으로 적용되는 현상이 일어났다.
그래서 View life cycle을 활용하여 뷰가 서브뷰의 위치를 재조정하는 시점에 메소드를 호출하였다.
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
navigationController?.navigationBar.sizeToFit()
}
위와 같이 호출해주니 정상적으로 Large Title로 나오게 되면서 문제가 해결되었다!!! 😇
- [성능] 필터링 걸고 아이템을 체크했을 때 앱의 반응속도가 느려지는 현상
- [RxSwift] Cell에 ViewModel을 할당하여 바인딩 처리할 때 주의해야할 점
- [ARC] dismiss 혹은 popViewController 호출 이후에도 메모리 할당이 해제되지 않는 이유?
- [UIKit] CollectionView의 높이를 콘텐츠 높이에 따라 동적으로 레이아웃 설정하는 법
- [UIKit] UICollectionView의 Cell Dynamic Size 지정해주기
- [UIKit] Navagation title을 줄바꿈 할 수는 없을까?
- [UIKit] Progress Bar의 높이를 변경하는 방법
- [UIKit] 왜 네비게이션 타이틀이 Large가 아닌 small로 나오는 걸까?
- [Xcode] LaunchScreen.storyboard에 배경색을 커스텀색상을 사용했는데, 다크모드가 작동하지 않는 현상
- [Xcode] 실제 디바이스로 앱을 테스트 하던 도중 발생한 문제