[ios] 내비게이션 바에서 작은 제목으로의 큰 제목 전환이 iOS 13에서 원활하지 않음

나는이 UINavigationController그것의의 기본적 가치를 navigationBar.prefersLargeTitles = true.

I가 그 전환하고 falsepush 새로운 장면에은을 (를 호출 할 수 있습니다 DetailsViewController로 변경하여) viewWillDisappear.

override func viewWillDisappear(_ animated: Bool) {
   super.viewWillDisappear(animated)
   navigationController?.navigationBar.prefersLargeTitles = false
}

이제는을 DetailsViewController사용하고 willMove(to parent:)있습니다.

override func willMove(toParent parent: UIViewController?) {
        navigationController?.navigationBar.prefersLargeTitles = true
}

큰 타이틀로 다시 전환합니다.

방법 첨부 된 스냅 샷 관찰 아이폰 OS (13) 방법으로 그 일을 아이폰 OS (12)가 고려를하고있는 아이폰 OS (12)가 올바른 동작입니다.

iOS 13 :

iOS 13

iOS 12 :

iOS 12



답변

당신이하는 일은 항상 잘못되었습니다. 탐색 표시 줄 prefersLargeTitlestrue한 번으로 설정 하고 다시 터치하지 않아야합니다.

이 나타나는 각 뷰 컨트롤러는 큰 제목에 대해 무엇을 변경하는 방법은 해당 뷰 컨트롤러 자체를 설정하는 것입니다 navigationItem(그에서 viewDidLoad) 원하는 것으로 largeTitleDisplayMode. 따라서 첫 번째 vc가 .always있고 두 번째 vc가 있으면 .never모든 것이 부드럽게됩니다.


답변

나는 같은 문제가 있었고 두 번째 ViewController의 스토리 보드에 NavigationItem을 배치해야했습니다. 내 NavigationItem는 SEGUE에 의해 자동으로 생성되고 있던 그 prefersLargeTitle에서는 viewDidLoad()보기가 등장하기 전에 작성이 완료되지 않았습니다. 스토리 보드에 NavigationItem을 추가하면이 문제가 해결 prefersLargeTitle되어 스토리 보드의 속성 메뉴에서 를 설정할 수있었습니다 .


답변

필자의 경우이 문제는의 자식 인 뷰 컨트롤러에 대한 segue 동안 발생했습니다 UITabBarController. largeTitleDisplayMode자식 뷰 컨트롤러 설정 이이 버그를 수정하기에 충분하지 않았습니다.

나는 UITabBarController가 현장에 탐색 항목을 추가하고 설정하여 문제를 해결 한 largeTitleDisplayMode.never가.


답변