Files
OrderScheduling/Pods/SwiftEntryKit/Source/Utils/GradientView.swift
DDIsFriend f0e8a1709d initial
2023-08-18 17:28:57 +08:00

64 lines
1.6 KiB
Swift

//
// GradientView.swift
// SwiftEntryKit
//
// Created by Daniel Huri on 4/20/18.
// Copyright (c) 2018 huri000@gmail.com. All rights reserved.
//
import UIKit
class GradientView: UIView {
struct Style {
let gradient: EKAttributes.BackgroundStyle.Gradient
let displayMode: EKAttributes.DisplayMode
init?(gradient: EKAttributes.BackgroundStyle.Gradient?,
displayMode: EKAttributes.DisplayMode) {
guard let gradient = gradient else {
return nil
}
self.gradient = gradient
self.displayMode = displayMode
}
}
private let gradientLayer = CAGradientLayer()
var style: Style? {
didSet {
setupColor()
}
}
init() {
super.init(frame: .zero)
layer.addSublayer(gradientLayer)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
}
private func setupColor() {
guard let style = style else {
return
}
gradientLayer.colors = style.gradient.colors.map {
$0.color(for: traitCollection, mode: style.displayMode).cgColor
}
gradientLayer.startPoint = style.gradient.startPoint
gradientLayer.endPoint = style.gradient.endPoint
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
setupColor()
}
}