Используйте imageView в качестве заголовка для панели навигации с предпочитаемыми заголовками - PullRequest
0 голосов
/ 05 июня 2018

Я хотел бы использовать пользовательский значок с текстом в качестве заголовка для панели навигации с включенным preferLargeTitles.Пользовательский заголовок должен быть большим и сначала по центру, а затем изменяться при прокрутке.Вот как это должно выглядеть: Большая панель навигации с заголовком, содержащим значок и текст

enter image description here

Я попытался использовать изображение со значком итекст, чтобы я мог создать один imageView и установить для него titleView, однако это приводит к небольшому центрированному виду, который перекрывает большую панель навигации.

enter image description here

Как мне это сделать?Я хочу, чтобы пользовательский заголовок вел себя так же, как большая навигационная панель по умолчанию, менял размеры и центрировал изображение при прокрутке вверх.Спасибо!

1 Ответ

0 голосов
/ 05 июня 2018

Попробуйте это

    // Create a navView to add to the navigation bar
    let navView = UIView()

    // Create the label
    let label = UILabel()
    label.text = "Assignment"
    label.font = UIFont.systemFont(ofSize: 30.0, weight: .bold)
    label.sizeToFit()
    label.center = navView.center
    label.textAlignment = NSTextAlignment.center

    // Create the image view
    let image = UIImageView()
    image.image = UIImage(named: "logo.png")
    let imageAspect = image.image!.size.width/image.image!.size.height
    image.frame = CGRect(x: label.frame.origin.x-label.frame.size.height*imageAspect - 5, y: label.frame.origin.y, width: label.frame.size.height*imageAspect, height: label.frame.size.height)
    image.contentMode = UIViewContentMode.scaleAspectFit

    // Add both the label and image view to the navView
    navView.addSubview(label)
    navView.addSubview(image)

    // Set the navigation bar's navigation item's titleView to the navView
    self.navigationItem.titleView = navView
    self.navigationController?.navigationBar.prefersLargeTitles = true

Вывод:

enter image description here

...