Как изменить цвет значка символов SF в UIKit?

В SwiftUI, вы можете изменить цвет значка с помощью foregroundColorмодификатор. Поэтому я думаю, что должен быть способ изменить цвет вUIKit. Я просмотрел документацию и не нашел ничего связанного с этим.

Возможно ли это прямо сейчас?

let iconImage = UIImage(systemName: "chevron.right", 
    withConfiguration: UIImage.SymbolConfiguration(pointSize: 16, weight: .regular, scale: .medium))

7 ответов

Решение

Использование:

let icon = UIImageView(image: iconImage.withRenderingMode(.alwaysTemplate))
icon.tintColor = .red

Используйте приведенный ниже код для изменения цвета значков SFSymbols

let imageIcon = UIImage(systemName: "heart.fill")?.withTintColor(.red, renderingMode: .alwaysOriginal)
    imageView.image = imageIcon

Перед

После

let iconImage = UIImage(systemName: "chevron.right",
                                            withConfiguration: UIImage.SymbolConfiguration(pointSize: 16, weight: .regular, scale: .medium))?.withTintColor(.systemGreen)
muteCall.setImage(UIImage(systemName: "mic.slash")?.withTintColor(.white, renderingMode: .alwaysOriginal), for: .normal)

Сделать рендеринг всегда оригинальным

Небольшое дополнение. Я рад, если это кому-то поможет. Мы можем комбинировать не только разные цвета, но и разные размеры и вес. Например, вы можете сделать это:

      let colorsConfig = UIImage.SymbolConfiguration(paletteColors: [.white, .magenta])
let sizeConfig = UIImage.SymbolConfiguration(pointSize: 30, weight: .bold)
let image = UIImage(systemName: "plus.circle.fill", withConfiguration: colorsConfig.applying(sizeConfig))
button.setImage(image, for: .normal)
      let image = UIImage(systemName: "arrow.up.circle.fill")?.withTintColor(.black, renderingMode: .alwaysOriginal)
button.setImage(image, for: .normal)
      @IBOutlet weak var downButton: UIButton!
downButton.setImage(UIImage(systemName: "chevron.down")?.withTintColor(.red, renderingMode: .alwaysOriginal), for: .normal)
Другие вопросы по тегам