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