使用 UINavigationBar appearance "back" 图标作为自定义按钮?
Use UINavigationBar appearance "back" icon for custom button?
我需要实现自定义导航栏的“<后退”按钮,如推送转场中所示,但在模态上。
我想避免过多的硬编码,发现了 属性 UINavigationBar.appearance().backIndicatorImage
和 UINavigationBar.appearance().backIndicatorTransitionMaskImage
。
我想用它们将我自己的文本放在它们旁边作为我的按钮,因为使用 .png 看起来不像真实的那样自然。
我试过了,但是这些属性 returns 中的 UIImage 为 nil
。
func addBackButton() {
let backButton = UIButton(type: .custom)
backButton.setImage(UINavigationBar.appearance().backIndicatorImage, for: .normal)
backButton.imageView?.contentMode = .scaleAspectFit
backButton.setTitle("Back", for: .normal)
backButton.setTitleColor(backButton.tintColor, for: .normal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
}
UINavigationBar.appearance().backIndicatorImage
是一个可选值,因此您无法从中获取系统默认 V 形。相反,如果不为空,系统将使用此处提供的图像,否则恢复为系统默认值。
如果定位 iOS 13+,您可以使用 Apple 的 SF Symbols,特别是后退按钮图标被称为 chevron.left
。要使用它,请调用 UIImage(systemName: "chevron.left")
。对于 iOS 的早期版本,您必须使用图像集资产。您可以使用 if #available(iOS 13.0, *) { ... } else { ... }
定位 iOS 的所有版本,如果在 iOS 13+ 上显示系统图像以改进 UI 外观。
func addBackButton() {
let backButton = UIButton(type: .custom)
if #available(iOS 13.0, *) {
backButton.setImage(UIImage(systemName: "chevron.left"), for: .normal)
}
else {
backButton.setImage(UIImage(named: "backChevon"), for: .normal)
}
backButton.imageView?.contentMode = .scaleAspectFit
backButton.setTitle("Back", for: .normal)
backButton.setTitleColor(backButton.tintColor, for: .normal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
}
我需要实现自定义导航栏的“<后退”按钮,如推送转场中所示,但在模态上。
我想避免过多的硬编码,发现了 属性 UINavigationBar.appearance().backIndicatorImage
和 UINavigationBar.appearance().backIndicatorTransitionMaskImage
。
我想用它们将我自己的文本放在它们旁边作为我的按钮,因为使用 .png 看起来不像真实的那样自然。
我试过了,但是这些属性 returns 中的 UIImage 为 nil
。
func addBackButton() {
let backButton = UIButton(type: .custom)
backButton.setImage(UINavigationBar.appearance().backIndicatorImage, for: .normal)
backButton.imageView?.contentMode = .scaleAspectFit
backButton.setTitle("Back", for: .normal)
backButton.setTitleColor(backButton.tintColor, for: .normal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
}
UINavigationBar.appearance().backIndicatorImage
是一个可选值,因此您无法从中获取系统默认 V 形。相反,如果不为空,系统将使用此处提供的图像,否则恢复为系统默认值。
如果定位 iOS 13+,您可以使用 Apple 的 SF Symbols,特别是后退按钮图标被称为 chevron.left
。要使用它,请调用 UIImage(systemName: "chevron.left")
。对于 iOS 的早期版本,您必须使用图像集资产。您可以使用 if #available(iOS 13.0, *) { ... } else { ... }
定位 iOS 的所有版本,如果在 iOS 13+ 上显示系统图像以改进 UI 外观。
func addBackButton() {
let backButton = UIButton(type: .custom)
if #available(iOS 13.0, *) {
backButton.setImage(UIImage(systemName: "chevron.left"), for: .normal)
}
else {
backButton.setImage(UIImage(named: "backChevon"), for: .normal)
}
backButton.imageView?.contentMode = .scaleAspectFit
backButton.setTitle("Back", for: .normal)
backButton.setTitleColor(backButton.tintColor, for: .normal)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
}