5

我正在尝试更改被SF Symbol调用的 clear(transparent) 部分的颜色delete.left.fill。到目前为止我尝试过如下

Button(action: { return }, label: {
                        Image(systemName: "delete.left.fill")
                            .background(Color.black)
                            //.accentColor(.black)
                            .font(.system(size: self.fontSize*0.75))
                    })
                        .frame(width: self.width, height: self.width)
                        .foregroundColor(.lightGray)
                        //.background(Color.black)

当我运行上面的代码时,结果就像

象征.

起初,x符号的内部与背景颜色相同。我想让它变黑。

  1. 我试图设置它backgroundColorButton它变成了全Button黑。
  2. 我试图将其设置accentColorImage黑色。没有改变。
  3. 我试图将其设置backgroundColorImage黑色。结果可以在图像中看到。

问题是,有没有办法以编程方式xsymbol, black 中制作它?

4

2 回答 2

6

您可以掩盖背景并应用自定义样式:

struct MyButtonStyle: ButtonStyle {
  public func makeBody(configuration: MyButtonStyle.Configuration) -> some View {
    configuration.label
      .compositingGroup()
      .opacity(configuration.isPressed ? 0.5 : 1.0)
  }
}

Button(action: {}) {
  Image(systemName: "delete.left.fill")
    .foregroundColor(.green)
    .background(
      Color.black.mask(Circle())
    )
}.buttonStyle(MyButtonStyle())

圆圈可能不适合任何用途,但对于此图像,它可以正常工作:

在此处输入图像描述

于 2020-02-01T02:02:21.850 回答
3

正如他用圆圈警告的那样,@Faruk 的解决方案不适用于我的 exclamationmark.triangle.fill

我创建了一个带有填充和未填充版本的 ZStack,以创建一个带有黑色感叹号和黑色边框的黄色三角形:

ZStack{
  Image(systemName: "exclamationmark.triangle")
    .foregroundColor(Color.black)
    .scaleEffect(1.1)
  Image(systemName: "exclamationmark.triangle.fill")
    .foregroundColor(Color.yellow)
}

我只在几个模拟器上试过,但在 iPadPro 和 iPad Mini 上看起来不错

于 2020-06-26T21:13:36.657 回答