如何隐藏导航栏后退按钮中的后退箭头?
How can I hide the back arrow in the navigation bar's back button?
我有一个导航控制器,我想为其覆盖默认的后退箭头图像和文本。基本上,我想隐藏 <
小箭头,而不是 < Back
,只显示 Back
文本。我已经能够用另一个图像替换后退箭头,所以我想我只是尝试用图像替换它,然后将图像设置为与背景颜色相匹配。我怎样才能做到这一点?
在 AppDelegate.swift 我有这个:
extension UINavigationItem{
override open func awakeFromNib() {
super.awakeFromNib()
let backItem = UIBarButtonItem()
backItem.title = ""
backItem.image = UIImage(named: "icons8_burger")
self.backBarButtonItem = backItem
}
}
在单击按钮时我们发送到的控制器的 viewDidLoad() 中,我有这个:
override func viewDidLoad() {
super.viewDidLoad()
let burger = UIImage(named: "icons8_burger")
navigationController?.navigationBar.backIndicatorImage = burger
navigationController?.navigationBar.backIndicatorTransitionMaskImage = burger
}
那么,我有什么办法可以做到这一点吗?到目前为止我还没有找到我要找的东西。
感谢任何建议!
将emply图像应用于navigationController
navigationController?.navigationBar.backIndicatorImage = UIImage(named: "")
如果你这样做,
navigationController?.navigationBar.backIndicatorImage = nil
navigationController?.navigationBar.backIndicatorTransitionMaskImage = nil
或
navigationController?.navigationBar.backIndicatorImage = UIImage(named: "")
navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "")
然后默认iOS使用<
作为默认图像。
要删除此图片,您需要添加空白透明图片。我使用了来自 here and google image reference is here
的示例
现在将图像像素大小减小到 (1,1)
并添加您的资产并使用以下代码。
navigationController?.navigationBar.backIndicatorImage = UIImage(named: "Blank")
navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "Blank")
此处 空白 是我资产中的相同图像名称。
使用如下所示的空图像对象,
let mask = UIImage()
navigationController?.navigationBar.backIndicatorImage = mask
navigationController?.navigationBar.backIndicatorTransitionMaskImage = mask
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)
如果您想使用外观 - backIndicator*
变量都是 read-only。
尝试下一个 code-only 方法。在 iOS 15.2
上测试
private func setupNavBar() {
let navBarAppearance = UINavigationBarAppearance()
let blankImage = UIImage.withColor(UIColor.white.withAlphaComponent(0))
navBarAppearance.setBackIndicatorImage(blankImage, transitionMaskImage: blankImage)
}
extension UIImage {
static func withColor(_ color: UIColor) -> UIImage {
let onePx = pixelsToPoints(1)
let rect = CGRect(x: 0, y: 0, width: onePx, height: onePx)
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
let context = UIGraphicsGetCurrentContext()
context!.setShouldAntialias(false)
context!.setFillColor(color.cgColor)
context!.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
static func pixelsToPoints(_ pixels: CGFloat) -> CGFloat {
return pixels / UIScreen.main.scale
}
}
我有一个导航控制器,我想为其覆盖默认的后退箭头图像和文本。基本上,我想隐藏 <
小箭头,而不是 < Back
,只显示 Back
文本。我已经能够用另一个图像替换后退箭头,所以我想我只是尝试用图像替换它,然后将图像设置为与背景颜色相匹配。我怎样才能做到这一点?
在 AppDelegate.swift 我有这个:
extension UINavigationItem{
override open func awakeFromNib() {
super.awakeFromNib()
let backItem = UIBarButtonItem()
backItem.title = ""
backItem.image = UIImage(named: "icons8_burger")
self.backBarButtonItem = backItem
}
}
在单击按钮时我们发送到的控制器的 viewDidLoad() 中,我有这个:
override func viewDidLoad() {
super.viewDidLoad()
let burger = UIImage(named: "icons8_burger")
navigationController?.navigationBar.backIndicatorImage = burger
navigationController?.navigationBar.backIndicatorTransitionMaskImage = burger
}
那么,我有什么办法可以做到这一点吗?到目前为止我还没有找到我要找的东西。
感谢任何建议!
将emply图像应用于navigationController
navigationController?.navigationBar.backIndicatorImage = UIImage(named: "")
如果你这样做,
navigationController?.navigationBar.backIndicatorImage = nil
navigationController?.navigationBar.backIndicatorTransitionMaskImage = nil
或
navigationController?.navigationBar.backIndicatorImage = UIImage(named: "")
navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "")
然后默认iOS使用<
作为默认图像。
要删除此图片,您需要添加空白透明图片。我使用了来自 here and google image reference is here
的示例现在将图像像素大小减小到 (1,1)
并添加您的资产并使用以下代码。
navigationController?.navigationBar.backIndicatorImage = UIImage(named: "Blank")
navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage(named: "Blank")
此处 空白 是我资产中的相同图像名称。
使用如下所示的空图像对象,
let mask = UIImage()
navigationController?.navigationBar.backIndicatorImage = mask
navigationController?.navigationBar.backIndicatorTransitionMaskImage = mask
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: nil, action: nil)
如果您想使用外观 - backIndicator*
变量都是 read-only。
尝试下一个 code-only 方法。在 iOS 15.2
private func setupNavBar() {
let navBarAppearance = UINavigationBarAppearance()
let blankImage = UIImage.withColor(UIColor.white.withAlphaComponent(0))
navBarAppearance.setBackIndicatorImage(blankImage, transitionMaskImage: blankImage)
}
extension UIImage {
static func withColor(_ color: UIColor) -> UIImage {
let onePx = pixelsToPoints(1)
let rect = CGRect(x: 0, y: 0, width: onePx, height: onePx)
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
let context = UIGraphicsGetCurrentContext()
context!.setShouldAntialias(false)
context!.setFillColor(color.cgColor)
context!.fill(rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
static func pixelsToPoints(_ pixels: CGFloat) -> CGFloat {
return pixels / UIScreen.main.scale
}
}