需要在 AppDelegate 导航栏左侧设置 logo
Need to set logo in left side of Navigation bar in AppDelegate
我正在开发 swift project.In,我需要将徽标显示在导航栏的左侧,并希望在 AppDelegate 中将其全局显示。但是在 Appdelegate 中没有检测到 self.navigationitem?任何帮助将不胜感激,因为它是我在 swift 中的第一个项目。
UINavigationBar.appearance().barTintColor = Constants.templatecolor
let logoImage = UIImage.init(named: "logoImage")
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRect(x: -40, y: 0, width: 150, height: 25)
logoImageView.contentMode = .scaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
negativeSpacer.width = -25
UINavigationItem.setLeftBarButtonItems(negativeSpacer, imageItem)
请在设置框架时更改 logoImageView 的 x 位置。
您将它的值设置为 -40 可能是因为您无法看到该徽标图像。
将它的 x 位置更改为 0.
您无法在 AppDelegate
中设置导航项。导航项是 UIViewController
或 UINavigationController
的 属性,并且您为每个 ViewController 设置了 UINavigationItem
。
如果您想要实现的只是为所有屏幕设置导航标题,请声明一个基础 class 将其称为 BaseViewController
n in viewDidLoad
of BaseViewController
设置导航项
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let logoImage = UIImage.init(named: "close")
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRect(x: -40, y: 0, width: 150, height: 25)
logoImageView.contentMode = .scaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
negativeSpacer.width = -25
self.navigationItem.leftBarButtonItems = [negativeSpacer,imageItem]
// Do any additional setup after loading the view.
}
}
现在您项目中的每个 viewController 都可以从 BaseViewController
扩展
class ViewController: BaseViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
}
}
确保在 viewDidLoad
中调用 super.viewDidLoad
希望对你有帮助
我正在开发 swift project.In,我需要将徽标显示在导航栏的左侧,并希望在 AppDelegate 中将其全局显示。但是在 Appdelegate 中没有检测到 self.navigationitem?任何帮助将不胜感激,因为它是我在 swift 中的第一个项目。
UINavigationBar.appearance().barTintColor = Constants.templatecolor
let logoImage = UIImage.init(named: "logoImage")
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRect(x: -40, y: 0, width: 150, height: 25)
logoImageView.contentMode = .scaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
negativeSpacer.width = -25
UINavigationItem.setLeftBarButtonItems(negativeSpacer, imageItem)
请在设置框架时更改 logoImageView 的 x 位置。 您将它的值设置为 -40 可能是因为您无法看到该徽标图像。 将它的 x 位置更改为 0.
您无法在 AppDelegate
中设置导航项。导航项是 UIViewController
或 UINavigationController
的 属性,并且您为每个 ViewController 设置了 UINavigationItem
。
如果您想要实现的只是为所有屏幕设置导航标题,请声明一个基础 class 将其称为 BaseViewController
n in viewDidLoad
of BaseViewController
设置导航项
class BaseViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let logoImage = UIImage.init(named: "close")
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRect(x: -40, y: 0, width: 150, height: 25)
logoImageView.contentMode = .scaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)
negativeSpacer.width = -25
self.navigationItem.leftBarButtonItems = [negativeSpacer,imageItem]
// Do any additional setup after loading the view.
}
}
现在您项目中的每个 viewController 都可以从 BaseViewController
class ViewController: BaseViewController {
...
override func viewDidLoad() {
super.viewDidLoad()
}
}
确保在 viewDidLoad
中调用 super.viewDidLoad
希望对你有帮助