在 NavigationBar 上仅设置一次图像 Swift
Set image just one time on NavigationBar Swift
我有一个包含多个 ViewController 的应用程序,我必须在导航栏的标题中显示一张图片,我已经有这段代码可以做到这一点。
public func carregarLogoNav() -> Void {
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 86, height: 38))
imageView.contentMode = .scaleAspectFit
let image = UIImage(named: "logo-simples.png")
imageView.image = image
navigationItem.titleView = imageView
}
但我想知道是否可以将此图像复制到所有其他视图,而不必在每个视图中粘贴此代码。
另一种方法是在另一个 ViewController 中调用此函数,但它也不起作用
anotherViewController().carregarLogoNav()
如果您希望在所有视图控制器中使用相同的 titleView
,那么您可以将 carregarLogoNav
函数放在扩展中,然后从每个视图控制器的 viewDidLoad
中调用它你的视图控制器:
extension UIViewController {
public func setupCarregarLogoNav() {
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 86, height: 38))
imageView.contentMode = .scaleAspectFit
let image = UIImage(named: "logo-simples.png")
imageView.image = image
navigationItem.titleView = imageView
}
}
然后在每个视图控制器中:
override func viewDidLoad() {
super.viewDidLoad()
setupCarregarLogoNav()
// any other code
}
这样你的设置代码就只在一次地方。只是从其他地方调用而已。
我有一个包含多个 ViewController 的应用程序,我必须在导航栏的标题中显示一张图片,我已经有这段代码可以做到这一点。
public func carregarLogoNav() -> Void {
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 86, height: 38))
imageView.contentMode = .scaleAspectFit
let image = UIImage(named: "logo-simples.png")
imageView.image = image
navigationItem.titleView = imageView
}
但我想知道是否可以将此图像复制到所有其他视图,而不必在每个视图中粘贴此代码。
另一种方法是在另一个 ViewController 中调用此函数,但它也不起作用
anotherViewController().carregarLogoNav()
如果您希望在所有视图控制器中使用相同的 titleView
,那么您可以将 carregarLogoNav
函数放在扩展中,然后从每个视图控制器的 viewDidLoad
中调用它你的视图控制器:
extension UIViewController {
public func setupCarregarLogoNav() {
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 86, height: 38))
imageView.contentMode = .scaleAspectFit
let image = UIImage(named: "logo-simples.png")
imageView.image = image
navigationItem.titleView = imageView
}
}
然后在每个视图控制器中:
override func viewDidLoad() {
super.viewDidLoad()
setupCarregarLogoNav()
// any other code
}
这样你的设置代码就只在一次地方。只是从其他地方调用而已。