【问题标题】:Add Image instead of largeTitle in NavigationBar在导航栏中添加图像而不是大标题
【发布时间】:2022-01-22 04:15:26
【问题描述】:

我在 ViewController 中有一个大标题。由于无法设置属性字符串,我想设置图像而不是某些标题。

所以我想替换这个结构:

navigationItem.title = "Some large title"

这样的:

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

但您可能知道它不可用。有人可以帮我吗?

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    iOS 13.0-iOS 15.0+,Xcode 13.2 Beta

    所以,我想通了。我用自定义的 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 {
                        ...
                    }
                }
            }
        }
        ...
    }
    

    简而言之:我正在进入 NavBar 视图层次结构中最深的视图,并将带有图像的新子视图添加到该层次结构中

    重要提示:

    不要与此 hack 一起使用:

    navigationItem.title
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2018-06-23
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      相关资源
      最近更新 更多