Я хочу создать действие в .trailingSwipeActionsConfigurationForRowAt
с изображением в цветах исходного изображения.По умолчанию все изображение становится белым.В моем изображении мало цветов, и я хочу сохранить их все, поэтому я не могу просто подкрасить их.Я пытаюсь использовать .withRenderingMode(.alwaysOriginal)
, но, похоже, он не работает вообще - изображение все еще становится белым, я пробовал pdf и png, все то же самое.
Вот мой код:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let isOn = UIContextualAction(style: .normal, title: "", handler: { _, _, completionHandler in
completionHandler(true)
})
isOn.backgroundColor = UIColor(red: 183/255, green: 189/255, blue: 196/255, alpha: 1)
isOn.image = UIImage(named: "SwitchOn")?.withRenderingMode(.alwaysOriginal)
return UISwipeActionsConfiguration(actions: [isOn])
}
Есть ли способ заставить его работать?
UPD:
Я нашел только один способ обойти это - вместо этого используйте .backgroundColor = UIColor(patternImage: theImage)
из .image
.
Но если вы будете использовать этот трюк, как я делал в конце - обратите внимание, что вам нужно будет создать изображение с точной высотой в качестве высоты ячейки и с расширенным полем цвета наПравая сторона изображения.Это поможет предотвратить повторение изображения в видимой области экрана.Кроме того, появится текстовое название (при использовании .image
оно скрыто), поэтому, если оно вам не нужно, просто поместите в него пустую строку.
Пример кода:
let theImage: UIImage? = UIImage(named:"MyImage")
action.backgroundColor = UIColor(patternImage: theImage!)
Пример изображения:
![Image example](https://i.stack.imgur.com/uPduv.png)