В SO много ответов о том, как заменить заголовок для контроллера представления изображением, используя titleView, следующим образом:
let myimage: UIImage = UIImage(named: "myimage.png")!
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
imageView.contentMode = .scaleAspectFit
imageView.image = image
self.navigationItem.titleView = imageView
Кроме того, вы можете поместить заголовок и изображение впредставление и его центрирование .
extension UIViewController {func setTitle(_ title: String, andImage image: UIImage) {
let titleLbl = UILabel()
titleLbl.text = title
titleLbl.textColor = UIColor.white
titleLbl.font = UIFont.systemFont(ofSize: 20.0, weight: .bold)
let imageView = UIImageView(image: image)
let titleView = UIStackView(arrangedSubviews: [imageView, titleLbl])
titleView.axis = .horizontal
titleView.spacing = 10.0
navigationItem.titleView = titleView
}
}
call with: `setTitle("yourTitle", andImage: UIImage(named: "yourImage"))`
Однако я хочу отцентрировать заголовок (который может варьироваться по ширине) обычным способом, а затем зафиксировать изображениерасстояние вправо.
Есть ли простой способ сделать это?