如何用白色替换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,
- 麦克风符号为纯白色
- 实心红色实心圆
谢谢。
添加容器视图,将您的图像视图设置为 .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
目前,我正在使用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,
- 麦克风符号为纯白色
- 实心红色实心圆
谢谢。
添加容器视图,将您的图像视图设置为 .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