如何修改SF Symbols系统图像及UIAction的背景色?
关于SF Symbols背景色与UIAction背景色的修改问题
一、SF Symbols背景色的修改限制
SF Symbols本身的背景是完全透明的,无法直接修改其背景色。你提到的调色板方法仅能修改符号自身的填充/描边颜色,示例代码如下:
let conf = UIImage.SymbolConfiguration(paletteColors: [blah]) .applying(UIImage.SymbolConfiguration(pointSize: 50, weight: .medium)) let acn = UIAction( title: "Blah", image: UIImage(systemName: "whatever", withConfiguration: conf) ) { [weak self] _ in guard let self else { return } yourButtonProcess("bleh") }

若无法修改承载控件的背景色,想要给系统符号添加“背景色”,只能通过模拟方式实现:
- 利用SF Symbols自带的填充类符号(如
square.fill)作为底层背景块,与目标符号组合,通过调色板分别设置背景块和符号的颜色,模拟带背景的效果。 - 或通过Core Graphics自行绘制带背景的图像,再将系统符号叠加在上方。
二、UIAction背景色的修改
原生API不支持直接修改UIAction的背景色,要实现“彩虹”配色菜单,需通过自定义菜单内容达成:
- 创建
UIContextMenuConfiguration时,自定义actionProvider,返回包含自定义视图的菜单内容,在自定义视图中自行绘制背景色、配置对应UIAction的文本和图标,实现每个选项的彩虹背景。 - 或子类化菜单底层使用的
UICollectionViewCell,自定义单元格背景色后关联到对应UIAction。
内容的提问来源于stack exchange,提问作者Fattie
相关产品推荐
相关产品推荐

