1

I'm generating a button with the following code but am unable to successfully change the button's foreground color.

let button = UIButton(
    type: .close,
    primaryAction: UIAction(
        image: UIImage(systemName: "x.circle"),
        handler: { _ in }
    )
)

I've tried

  • UIImage(systemName: "x.circle")?.withTintColor(.red)

  • UIImage(systemName: "x.circle")?.withTintColor(.systemRed, renderingMode: .alwaysOriginal)

  • button.setTitleColor(.systemRed, for: .normal)

  • Adding a configuration:

    var config = UIButton.Configuration.borderless()
    config.baseForegroundColor = .systemRed
    button.configuration = config
    
  • Using a different symbol variant like: UIImage(systemName: "x.circle.fill")

In this specific scenario I want to change the color of the circular background area of the image only and not the X (crosses) or the button's background. Essentially I want a red filled circle with a gray X (crosses).

So I can get this: enter image description here

But I want something more like this (with the red limited to inside the circle): enter image description here

pinglock
  • 982
  • 2
  • 12
  • 30

1 Answers1

2
  1. Change type from .close to .custom

  2. Change UIImage(systemName: "x.circle") to

    UIImage(systemName: "x.circle")?.withTintColor(.systemRed, renderingMode: .alwaysOriginal)

pinglock
  • 982
  • 2
  • 12
  • 30