SwiftUI меняет цвет прозрачной части внутри символа SF - PullRequest
2 голосов
/ 01 февраля 2020

Я пытаюсь изменить цвет прозрачной (прозрачной) детали внутри SF Symbol, называемой 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)

Когда я запускаю код, как указано выше, результат выглядит как

symbol.

Сначала символ x внутри символа был того же цвета, что и фон. Я хочу сделать это черным.

  1. Я попытался установить backgroundColor из Button, и он сделал Button черным.
  2. Я пытался установить accentColor из Image на черный. Ничего не изменилось.
  3. Я пытался установить backgroundColor из Image на черный. Результат можно увидеть на изображении.

Вопрос в том, есть ли способ сделать так, чтобы x, внутри symbol, черным программно?

1 Ответ

2 голосов
/ 01 февраля 2020

Вы можете замаскировать фон и применить собственный стиль:

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())

Круг может не подходить для любого использования, но для этого изображения он работает нормально:

enter image description here

...