ios - 在导航栏中插入图标/使 BarButtonItem 不可点击 Swift iOS
问题描述
我想在导航栏中放置一个蓝牙图标,以显示连接/断开状态。
我尝试添加一个 BarButtonItem,将图像设置为我的蓝牙图标,然后禁用并启用此按钮。到目前为止这工作正常,对我来说看起来不错,但我不想让这个按钮可点击,这样它就不会在点击图标时改变颜色。
这是可能的,还是有办法将 UIImageView 放入导航栏中?
谢谢!
解决方案
添加以下代码将解决您的问题。
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
为自定义视图。UIButton
UIBarButtonItem
如果您单击按钮,这不会改变图像的颜色。
如果您不想添加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
否则图像将显示为原始图像。见下文:
推荐阅读
- python-3.x - 如何使用opencv去除手写背景?
- python - 如何从已保存为字节数组的tdms文件中读取python中的labview双数组(展平为字符串,然后字符串为字节数组)
- pytorch - RuntimeError:输入类型(torch.cuda.FloatTensor)和权重类型(torch.FloatTensor)应该是一样的,但是我把模型和数据设置为cuda
- mysql - 如何在 SELECT 语句中即时更改编码?
- c++ - 使用编译时类型和运行时函数创建 std::tuple
- google-sheets - 谷歌表格公式根据匹配条件查找缺失的数字
- reactjs - 下载超过 10mb React + Spring boot 的文件时出现“无法获取”错误
- database-connection - 连接池是否利用 SQL 页面缓存以及如何利用?
- mvvm - Dagger 2 + Service + Repository(Room DB+Cloud)
- swift - 修改 CVPixelBuffer