ios - UINavigationBar 中的多色后退按钮

标签 ios swift

我在 UINavigationController 中有一个 UINavigationbar。我正在尝试将后退按钮设置为我通过核心图形绘制的自定义图像。图像放在 UIImageView 中时看起来不错,但是当我尝试将图像放置为我的后退按钮时,它显示为一种颜色。我认为这与 UINavigationBar 的 tintColor 属性有关。

基本上,无论我做什么,我都无法在 UIImage 中显示两种颜色。这是我试图设置为我的后退按钮的图像(只是红色圆圈,而不是周围的黑色):

enter image description here

这是我的代码:

let image = Icons.backButton(with: CGSize(width: 28, height: 28))
self.navigationController?.navigationBar.backIndicatorImage = image
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = image
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItem.Style.plain, target: nil, action: nil)

据我所知,当我将图像分配给后退按钮时,navigationBar 会采用当前的 tintColor 并将其应用于整个图像。 Alpha channel 是允许的,但是所有纯色的东西都用淡色填充。所以现在我得到一个红色圆圈,没有白色箭头。我尝试将 tintColor 设置为 UIColor.clear,但这会使整个后退按钮清晰/不可见。

有没有什么方法可以破解导航 Controller ,这样我就可以拥有不止一种颜色的后退按钮?我知道我可以设置自定义 UIView 而不是使用 navigationController,但我不想这样做。

感谢任何帮助。谢谢!

最佳答案

需要设置渲染模式为.alwaysOriginal 例如:

var backImage = UIImage(named: "back")
backImage = backImage?.withRenderingMode(.alwaysOriginal)
navigationController?.navigationBar.backIndicatorImage = backImage
navigationController?.navigationBar.backIndicatorTransitionMaskImage = backImage

关于ios - UINavigationBar 中的多色后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53635414/

相关文章:

ios - 在 Apple TV 上使用多个控件管理焦点

swift - 在 macOS 中从浏览器获取当前 URL

ios - 注释标注不起作用 Swift

ios - Swift Make Animation 看起来就像去新的 ViewController 而没有 One

swift - 从 tableView 更改 DetailVC 中的标签

ios - Spritekit 多节点动画序列器,可以提高性能吗?

php - 什么是 API token

ios - NavigationTitle 与 subTitle 重叠

ios - Titanium:水平布局中的 UI.Slider

ios - swift 中字典键的访问值