Chuyển đổi tiêu đề lớn sang tiêu đề nhỏ trong thanh điều hướng không mượt mà iOS 13, dính


11

Tôi có một UINavigationControllergiá trị mặc định của nó navigationBar.prefersLargeTitles = true.

Tôi đang chuyển đổi điều đó sang falsekhi tôi push vào một cảnh mới, hãy gọi nó ( DetailsViewController), bằng cách thay đổi nó thành viewWillDisappear.

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

Bây giờ trong DetailsViewControllertôi đang sử dụng willMove(to parent:).

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

Để chuyển trở lại các tiêu đề lớn.

Quan sát các ảnh chụp nhanh đính kèm về cách iOS 13 thực hiện với cách iOS 12 thực hiện, coi iOS 12 là hành vi chính xác.

iOS 13 :

iOS 13

iOS 12 :

iOS 12


Bạn hoàn toàn không phải thay đổi .prefersLargeTitleskhi đẩy bộ điều khiển chế độ xem chi tiết sang ngăn điều hướng, nó sẽ tự động sử dụng một tiêu đề nhỏ và sau đó quay lại cái lớn sau khi bạn quay lại trình điều khiển xem gốc, theo như tôi biết
henrik-dmg

@ henrik-dmg Tôi không chắc nó có như vậy trước đây không, nhưng không còn nữa mọi thứ sẽ trở thành tiêu đề lớn nếu tôi làm như vậy, tôi đã thử nó.
Mohmmad S

1
largeTitleDisplayModeđến . automaticvà bạn sẽ có được sự chuyển đổi mong muốn.
Harry J

@HarryJ ở đâu?
Mohmmad S

Trong viewDidLoad hoặc bộ điều khiển điều hướng của bạn,navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Harry J

Câu trả lời:


21

Những gì bạn đang làm luôn luôn sai. Bạn nên đặt prefersLargeTitlesthành truemột lần cho thanh điều hướng và không bao giờ chạm vào nó một lần nữa.

Cách để thay đổi những gì mỗi bộ điều khiển chế độ xem thực hiện đối với các tiêu đề lớn khi nó xuất hiện là bộ điều khiển chế độ xem đó đặt bộ điều khiển của riêng nó navigationItem(theo ý viewDidLoadmuốn) largeTitleDisplayMode. Vì vậy, nếu vc đầu tiên có .alwaysvà thứ hai có .nevermọi thứ sẽ trơn tru.


Thật là một câu trả lời hay! Không bao giờ biết rằng đó là cách để có các danh hiệu lớn và nhỏ cùng một lúc!
Kacper Cz

0

Tôi gặp vấn đề tương tự và phải đặt NavigationItem trên bảng phân cảnh của ViewContoder thứ hai. NavigationItem của tôi đã được tạo ra tự động bởi segue và nó prefersLargeTitletrong viewDidLoad()không tạo ra trước quan điểm xuất hiện xong. Thêm một NavigationItem vào bảng phân cảnh đã khắc phục vấn đề này và cho phép tôi đặt menu prefersLargeTitletrong thuộc tính của bảng phân cảnh.


0

Trong trường hợp của tôi, sự cố này đã xảy ra trong quá trình tách biệt với bộ điều khiển xem là con của a UITabBarController. Cài đặt largeTitleDisplayModetrên bộ điều khiển khung nhìn con là không đủ để sửa lỗi này.

Tôi đã giải quyết vấn đề bằng cách thêm một mục điều hướng vào cảnh UITabBarControll và đặt largeTitleDisplayModelàm.never ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.