简体   繁体   English

在 NavigationBar 中添加 Image 而不是 largeTitle

[英]Add Image instead of largeTitle in NavigationBar

I have a large title in a ViewController.我在 ViewController 中有一个大标题。 Instead of some title I want to set an image due to I can't set attributed string.由于无法设置属性字符串,我想设置图像而不是某些标题。

So I want to replace this construction:所以我想替换这个结构:

navigationItem.title = "Some large title"

To something like this:对于这样的事情:

let UIImageView = UImageView(image: UIImage(named: "kinopoisk_main_logo"))
navigationItem.title = "Some large title"

But as you may know it's unavailable.但是您可能知道它不可用。 Can anybody help me with that?有人可以帮我吗?

iOS 13.0-iOS 15.0+, Xcode 13.2 Beta iOS 13.0-iOS 15.0+,Xcode 13.2 测试版

So, I figured it out.所以,我想通了。 I made a realization with a custom NavigationBar:我用自定义的 NavigationBar 实现了:

public class NavigationBar: UINavigationBar {
    private lazy var someImageView: UIImageView = {
        let largeTitleImage = UIImageView(image: UIImage(named: "some_image"))
        largeTitleImage.contentMode = .scaleAspectFit
        return largeTitleImage
    }()
    ...
    override public func layoutSubviews() {
        super.layoutSubviews()
        setupAttributesForLargeTitle()
    }
    ...
    private func setupAttributesForLargeTitle() {
        if let largeTitle = subviews.filter({ NSStringFromClass(type(of: $0)).contains("LargeTitleView") }).first {
            for subview in largeTitle.subviews {
                if *Some boolean value indicating largeTitle* {
                    subview.addSubview(someImageView)
                } else {
                    ...
                }
            }
        }
    }
    ...
}

Briefly: I am getting to the deepest view in hierarchy of NavBar views and adding new subview with image to this hierarchy简要地说:我正在进入 NavBar 视图层次结构中最深的视图,并将带有图像的新子视图添加到该层次结构中

Important note:重要的提示:

Don't use with this hack:不要使用这个黑客:

navigationItem.title

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM