【问题标题】:UINavigationBar - prefersLargeTitles - How to set image to the left of the title?UINavigationBar - prefersLargeTitles - 如何将图像设置在标题的左侧?
【发布时间】:2018-11-10 00:32:50
【问题描述】:

下面的文章展示了如何在导航标题的右侧添加图像。 https://blog.uptech.team/how-to-build-resizing-image-in-navigation-bar-with-large-title-8ba2e8bcb840

我想将图像添加到导航栏标题的左侧。为了实现它,我为 imageView 设置了 leftAnchor 而不是 right 锚点,如下所示。

imageView.leftAnchor.constraint(equalTo: navigationBar.leftAnchor, constant: Const.ImageRightMargin)

图片显示在导航栏标题上方,这不是我想要的。我希望图片与标题位于同一行(标题左侧)。

注意:

  1. 我在 SO 上看到了关于在标题中添加图片的其他问题 查看,但这个问题特别要求提供有关 在标题左侧添加图像。因此,这个问题 不是重复的。
  2. 我知道我可以像下面这样设置自定义标题视图,但我没有 想要丢掉导航栏的 prefersLargeTitles 设置。

    self.navigationItem.titleView = customTitleView

非常感谢任何帮助。

【问题讨论】:

  • 如果没有某种解决方法,您将无法做到这一点。其中之一是自定义标题视图。
  • @Evgeniy - 我尝试了很多变体,但似乎都没有。您能否介绍一下您建议的解决方法?
  • 我的意思是实现自定义标题视图,您需要自己执行大标题行为。或自定义导航栏。不幸的是,我没有看到任何更简单的方法。
  • 我尝试了自定义标题视图。自定义标题视图标签只是停留在导航栏的中心。我无法将它放到导航栏中的下一行(左对齐),就像设置 prefersLargeTitles = true 时标题的外观一样。有什么建议么?另外,您知道我如何通过创建自定义导航栏来实现这一点吗?我似乎没有得到太多关于创建自定义导航栏的文档。

标签: ios swift uinavigationbar


【解决方案1】:
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let img = UIImage.init(named: "imgName")

        let imgView = UIImageView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))

        imgView.image = img!

        imgView.contentMode = .scaleAspectFit

        let item = UIBarButtonItem.init(customView: imgView)

        let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)

        navigationItem.leftBarButtonItems = [negativeSpacer, item]

    }
}

结果

如果要在点击图片时执行请求,替换此行

let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)

用那一行

let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: self, action: #selector(go))

然后放置这个

@objc func go() {

    print("go")
}

【讨论】:

  • prefersLargeTitles 应设置为 true。这将使标题左对齐并与图像重叠。
猜你喜欢
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 2010-09-22
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多