12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // 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)
- }
- }
|