Установить изображение в качестве заголовка в UINavigationBar в Swift 4 - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть следующий код для панели навигации, который устанавливает слово Title для заголовка, но вместо этого я хочу, чтобы он был моим логотипом.

     navigationbar = UINavigationBar(frame: CGRect(x: 0, y: 20, width: self.view.bounds.width, height: 44));

    navigationbar.barTintColor = UIColor(red: 247/255, green: 247/255, blue: 247/255, alpha: 1.0);

    let title = UINavigationItem(title: "Title");

    navigationbar.setItems([title], animated: false);

    self.view.addSubview(navigationbar);

Кроме того, какой размер в пикселях должен быть для @ 1x,@ 2x и @ 3x, если я хочу квадратный логотип?Логотип также является значком моего приложения.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

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

// top-logo = your image name 
if let logo = UIImage(named: "top-logo"){
    let imageView = UIImageView(image:logo)
    self.navigationItem.titleView = imageView
}

Выход:

enter image description here

0 голосов
/ 13 сентября 2018

Не совсем уверен, что это то, чего вы пытаетесь достичь, но в стеке уже есть несколько предложений.

Вот популярное:

let logo = UIImage(named: "logo") // Or logo.png if you haven't added it to assets
let imageView = UIImageView(frame: CGRect(x:0, y:0, width:50.0, height:50.0))
imageView.image = logo
imageView.contentMode = .scaleAspectFit
self.navigationItem.titleView = imageView

В качестве альтернативы можно использовать этоМетод:

func addNavBarImage() {

    let navController = navigationController!

    let image = UIImage(named: "logo.png") //Your logo url here
    let imageView = UIImageView(image: image)

    let bannerWidth = navController.navigationBar.frame.size.width
    let bannerHeight = navController.navigationBar.frame.size.height

    let bannerX = bannerWidth / 2 - (image?.size.width)! / 2
    let bannerY = bannerHeight / 2 - (image?.size.height)! / 2

    imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
    imageView.contentMode = .scaleAspectFit

    navigationItem.titleView = imageView
}

Ответ на этот вопрос .

...