有没有一种方法可以突出显示(即切换)UIBarButtonItem而不使用自定义视图?
例如,查看地图应用程序中的3D按钮:
或者来自音乐应用程序的“全部随机”:
请注意:请勿添加解释。
例如,查看地图应用程序中的3D按钮:
或者来自音乐应用程序的“全部随机”:
请注意:请勿添加解释。
UIBarButtonItem
的背景图像:item.setBackgroundImage(UIImage(named: "item-bg.png"), forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default)
如果要取消选定项,将背景图像设置为nil
:
item.setBackgroundImage(nil, forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default)
您需要为背景创建一个图像文件。
UIControl
有一个可以实现此目标的 isSelected
属性,但 UIBarButtonItem
没有继承自它,因此您无法将其强制转换并设置值。然而,我发现了一个奇怪的解决方法。如果将按钮操作的 sender
类型设置为 UIControl
,它将被视为完整的 UIControl,并且您可以设置 isSelected
。
例如: @objc func showContentsView(_ sender: UIControl) {
sender.isSelected.toggle()
}
如果需要在其他位置切换状态,可以在您的视图控制器上定义一个变量:
var selectedControl: UIControl?
在您的操作中设置selectedControl
的值,并在取消选择时将其设置为nil
。
item.image = UIImage(named: isSelected ? "SelectedImage" : "NormalImage")