如何用白色替换SFSymbol图标透明色

How to replace SFSymbol icon transparent color with white color

目前,我正在使用CALayer来实现连锁反应。但是,SFSymbol 中的透明颜色会导致问题。

我正在使用以下方式设置 UIImageView

imageView.image = UIImage(systemName: "mic.circle.fill")
imageView.tintColor = UIColor.red

以上代码产生以下结果。 (绿色是 CALayer 带有波纹动画)


我希望麦克风符号具有纯白色,而不是透明色。我试试

imageView.image = UIImage(systemName: "mic.circle.fill")?.withRenderingMode(.alwaysOriginal)

它产生

现在,我得到了纯白色的麦克风符号。但是,圆圈​​不再是纯红色。


我再试试

imageView.image = UIImage(systemName: "mic.circle.fill")?.withRenderingMode(.alwaysOriginal).withTintColor(UIColor.red)

现在又回到了同样的问题。

你有什么想法,我怎样才能拥有一个SFSymbol,

  1. 麦克风符号为纯白色
  2. 实心红色实心圆

谢谢。

添加容器视图,将您的图像视图设置为 .withRenderingMode(.alwaysTemplate),按照我下面的示例...在您的 class 控制器下设置您的容器和图像视图:

let myImageV: UIImageView = {
    let iv = UIImageView()
    iv.image = UIImage(systemName: "mic.fill")?.withRenderingMode(.alwaysTemplate)
    iv.tintColor = .white
    iv.translatesAutoresizingMaskIntoConstraints = false
    iv.contentMode = .scaleAspectFit
    iv.clipsToBounds = true
    
    return iv
}()

let containerView: UIView = {
    let v = UIView()
    v.backgroundColor = .red
    v.layer.cornerRadius = 50
    v.clipsToBounds = true
    v.translatesAutoresizingMaskIntoConstraints = false
    return v
}()

现在在 viewDidLoad 中设置约束

view.addSubview(containerView)
    containerView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    containerView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    containerView.heightAnchor.constraint(equalToConstant: 100).isActive = true
    containerView.widthAnchor.constraint(equalToConstant: 100).isActive = true
    
    containerView.addSubview(myImageV)
    myImageV.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    myImageV.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    myImageV.heightAnchor.constraint(equalToConstant: 60).isActive = true // here set the height of mic
    myImageV.widthAnchor.constraint(equalToConstant: 60).isActive = true // here set the width of mic

这是结果:

我可以使用下面的代码片段

    let image = UIImage(
        systemName: "mic.circle.fill",
        withConfiguration:UIImage.SymbolConfiguration(weight: .regular))?.applyingSymbolConfiguration(
            UIImage.SymbolConfiguration(paletteColors:[
                .white,
                .label,
                UIColor(red: 0.90, green: 0.22, blue: 0.21, alpha: 1.00)
            ])
        )

此代码段是从第 3 方软件生成的:San Fransymbols