Я пытаюсь реализовать пользовательский заголовок навигации в приложении для iOS.
StoryBoard выглядит следующим образом:
Место, где я хочу иметь пользовательский заголовок навигации, - это последний вид (вид сообщения), и поскольку я использую изображение и текст, это означает, что мне нужно иметь пользовательские ширину и высоту.Это необходимо, если я сделаю это в viewDidLoad
:
let rect = CGRect(x: 0, y:0, width: 150, height: 88)
titleView = UIView(frame: rect)
......
titleView?.addSubview(imageView)
......
titleView?.addSubview(label)
navigationItem.titleView = titleView
Высота заголовка заблокирована до 44pt.
Но как мне удалось это сделать, это добавить подпункты к навигацииbar:
var navigationBar: MessagesNavigationBar? {
guard let navigationBar = navigationController?.navigationBar as? MessagesNavigationBar else {
return nil
}
return navigationBar
}
И в viewDidLoad
let rect = CGRect(x: 0, y:0, width: 150, height: 88)
titleView = UIView(frame: rect)
......
titleView?.addSubview(imageView)
......
titleView?.addSubview(label)
navigationBar?.addSubview(titleView!)
Но проблема в том, что мне нужно удалить подпредставления, когда я покидаю представление, иначе все, что я добавлю, будет присутствоватьа также в табличном представлении.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if navigationBar != nil {
titleView?.removeFromSuperview()
}
}
Что заставляет меня чувствовать, что я поступаю неправильно, и мне трудно добавить анимацию затухания в эти подпредставления, когда я покидаю разговор.(т.е. приложение для родных сообщений на iOS).
Итак, как правильно создать собственную панель навигации заголовка в iOS 12?
Сцены