Hi the easies way is to create a UIColor
from patternImage
like so:
let image = UIImage(named: "gradient.jpeg");
let color = UIColor(patternImage: image!);
Then just use the color where you need:
buttonAction.layer.borderWidth = 1;
buttonAction.layer.cornerRadius = 5;
buttonAction.layer.borderColor = color.cgColor;
buttonAction.setTitleColor(color, for: .normal);
Result:

for creating a gradient UIColor use this method: (you can add it to an UIColor extension)
func gradientColorFrom(color color1:UIColor, toColor color2:UIColor ,withSize size:CGSize) ->UIColor
{
UIGraphicsBeginImageContextWithOptions(size, false, 0);
let context = UIGraphicsGetCurrentContext();
let colorspace = CGColorSpaceCreateDeviceRGB();
let colors = [color1.cgColor, color2.cgColor] as CFArray;
let gradient = CGGradient(colorsSpace: colorspace, colors: colors, locations: nil);
context!.drawLinearGradient(gradient!, start: CGPoint(x:0, y:0), end: CGPoint(x:size.width, y:0), options: CGGradientDrawingOptions(rawValue: UInt32(0)));
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
let finalCColor = UIColor(patternImage: image!);
return finalCColor;
}
- for Horizontal gradient use
CGPoint(x:size.width, y:0)
- for Vertical gradient use
CGPoint(x:0, y:size.height)