首页 > 解决方案 > 在导航栏中插入图标​​/使 BarButtonItem 不可点击 Swift iOS

问题描述

我想在导航栏中放置一个蓝牙图标,以显示连接/断开状态。

我尝试添加一个 BarButtonItem,将图像设置为我的蓝牙图标,然后禁用并启用此按钮。到目前为止这工作正常,对我来说看起来不错,但我不想让这个按钮可点击,这样它就不会在点击图标时改变颜色。

这是可能的,还是有办法将 UIImageView 放入导航栏中?

谢谢!

标签: iosswifticonsnavigationbar

解决方案


添加以下代码将解决您的问题。

let btnBluetooth = UIButton()
btnBluetooth.setImage(#imageLiteral(resourceName: "icon_bluetooth"), for: .normal)
btnBluetooth.setImage(#imageLiteral(resourceName: "icon_bluetooth"), for: .highlighted)
btnBluetooth.tintColor = .red

let barButton = UIBarButtonItem(customView: btnBluetooth)
self.navigationItem.rightBarButtonItem = barButton

此代码将添加自定义按钮,您可以在其中管理正常和突出显示模式的图像。对于蓝牙状态管理,您已将其更改tintColor为自定义视图。UIButtonUIBarButtonItem

如果您单击按钮,这不会改变图像的颜色。

如果您不想添加UIButton,可以UIImageView通过以下代码添加。

let imgBluetooth = UIImageView(image: #imageLiteral(resourceName: "icon_bluetooth"))
imgBluetooth.tintColor = .red

let barButton = UIBarButtonItem(customView: imgBluetooth)
self.navigationItem.rightBarButtonItem = barButton

此外,请确保您已为添加到内部以影响 tintColor的蓝牙图标选择渲染为作为模板图像。Assets.xcassets否则图像将显示为原始图像。见下文:

图像属性检查器


推荐阅读