UINavigationBar - prefersLargeTitles - 如何在标题左侧设置图像?
UINavigationBar - prefersLargeTitles - How to set image to the left of the title?
下面的文章展示了如何在导航标题的右侧添加图像。
https://blog.uptech.team/how-to-build-resizing-image-in-navigation-bar-with-large-title-8ba2e8bcb840
我想将图片添加到导航栏标题的左侧。为了实现它,我为 imageView 设置了 leftAnchor 而不是右锚点,如下所示。
imageView.leftAnchor.constraint(equalTo: navigationBar.leftAnchor, constant: Const.ImageRightMargin)
图片显示在导航栏标题上方,这不是我想要的。我希望图片与标题在同一行(标题左侧)。
注:
- 我在 SO 上看到了关于向标题添加图像的其他问题
查看,但此问题特别要求提供有关的信息
在标题左侧添加图像。因此,这个问题
不是重复项。
我知道我可以像下面这样设置自定义标题视图,但我不会
想去掉导航栏的 prefersLargeTitles 设置。
self.navigationItem.titleView = customTitleView
非常感谢任何帮助。
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")
}
下面的文章展示了如何在导航标题的右侧添加图像。 https://blog.uptech.team/how-to-build-resizing-image-in-navigation-bar-with-large-title-8ba2e8bcb840
我想将图片添加到导航栏标题的左侧。为了实现它,我为 imageView 设置了 leftAnchor 而不是右锚点,如下所示。
imageView.leftAnchor.constraint(equalTo: navigationBar.leftAnchor, constant: Const.ImageRightMargin)
图片显示在导航栏标题上方,这不是我想要的。我希望图片与标题在同一行(标题左侧)。
注:
- 我在 SO 上看到了关于向标题添加图像的其他问题 查看,但此问题特别要求提供有关的信息 在标题左侧添加图像。因此,这个问题 不是重复项。
我知道我可以像下面这样设置自定义标题视图,但我不会 想去掉导航栏的 prefersLargeTitles 设置。
self.navigationItem.titleView = customTitleView
非常感谢任何帮助。
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")
}