Вы можете попытаться создать цвет из градиентного изображения следующим образом:
func linearGradientColor(from colors: [UIColor], locations: [CGFloat], size: CGSize) -> UIColor {
let image = UIGraphicsImageRenderer(bounds: CGRect(x: 0, y: 0, width: size.width, height: size.height)).image { context in
let cgColors = colors.map { $0.cgColor } as CFArray
let colorSpace = CGColorSpaceCreateDeviceRGB()
let gradient = CGGradient(
colorsSpace: colorSpace,
colors: cgColors,
locations: locations
)!
context.cgContext.drawLinearGradient(
gradient,
start: CGPoint(x: 0, y: 0),
end: CGPoint(x: size.width, y:0),
options:[]
)
}
return UIColor(patternImage: image)
}
...
deleteAction.backgroundColor = linearGradientColor(
from: [.red, .blue],
locations: [0, 1],
size: CGSize(width: 100, height: 44)
)
Но этот код имеет некоторые ограничения.Вы не можете угадать размер вида действия.Таким образом, в зависимости от ваших потребностей, вы можете либо повторить цвет, растянуть его или использовать большое изображение.Использование сторонних библиотек также является хорошим вариантом.
![result](https://i.stack.imgur.com/11KD6.png)