// // GradientView.swift // Runner // // Created by liukai on 2024/7/4. // import UIKit class GradientView: UIView { override func draw(_ rect: CGRect) { guard let context = UIGraphicsGetCurrentContext() else { return } let colors = [UIColor(hex: "#091D44").cgColor, UIColor(hex: "#245A8A").cgColor, UIColor(hex: "#7F7CEC").cgColor] let colorSpace = CGColorSpaceCreateDeviceRGB() let colorLocations: [CGFloat] = [0.0, 0.5, 1.0] guard let gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: colorLocations) else { return } let startPoint = CGPoint.zero let endPoint = CGPoint(x: 0, y: bounds.height) context.drawLinearGradient(gradient, start: startPoint, end: endPoint, options: []) } } extension UIColor { convenience init(hex: String) { var hexSanitized = hex.trimmingCharacters(in: .whitespacesAndNewlines) hexSanitized = hexSanitized.replacingOccurrences(of: "#", with: "") var rgb: UInt64 = 0 Scanner(string: hexSanitized).scanHexInt64(&rgb) let red = CGFloat((rgb & 0xFF0000) >> 16) / 255.0 let green = CGFloat((rgb & 0x00FF00) >> 8) / 255.0 let blue = CGFloat(rgb & 0x0000FF) / 255.0 self.init(red: red, green: green, blue: blue, alpha: 1.0) } }