udpated swatch
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
This commit is contained in:
parent
2a53bae78c
commit
a07fc10a7e
@ -32,12 +32,13 @@ open class RadioSwatchBase<ModelType: RadioSwatchModel>: Control<ModelType>, Cha
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
public var fillView: UIView = {
|
public var fillView: UIImageView = {
|
||||||
return UIView().with {
|
return UIImageView().with {
|
||||||
$0.translatesAutoresizingMaskIntoConstraints = false
|
$0.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
$0.contentMode = .scaleAspectFit
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
public var onChange: Blocks.ActionBlock?
|
public var onChange: Blocks.ActionBlock?
|
||||||
|
|
||||||
//can't bind to @Proxy
|
//can't bind to @Proxy
|
||||||
@ -168,7 +169,7 @@ open class RadioSwatchBase<ModelType: RadioSwatchModel>: Control<ModelType>, Cha
|
|||||||
private var selectorBorderWidth: CGFloat = 1.0
|
private var selectorBorderWidth: CGFloat = 1.0
|
||||||
public let swatchSize = CGSize(width: 48, height: 48)
|
public let swatchSize = CGSize(width: 48, height: 48)
|
||||||
public let fillSize = CGSize(width: 36, height: 36)
|
public let fillSize = CGSize(width: 36, height: 36)
|
||||||
|
public let disabledAlpha = 0.5
|
||||||
private var radioSwatchBackgroundColorConfiguration: BinaryDisabledSurfaceColorConfiguration<ModelType> = {
|
private var radioSwatchBackgroundColorConfiguration: BinaryDisabledSurfaceColorConfiguration<ModelType> = {
|
||||||
return BinaryDisabledSurfaceColorConfiguration<ModelType>().with {
|
return BinaryDisabledSurfaceColorConfiguration<ModelType>().with {
|
||||||
$0.forFalse.enabled.lightColor = VDSFormControlsColor.backgroundOnlight
|
$0.forFalse.enabled.lightColor = VDSFormControlsColor.backgroundOnlight
|
||||||
@ -210,6 +211,7 @@ open class RadioSwatchBase<ModelType: RadioSwatchModel>: Control<ModelType>, Cha
|
|||||||
/// Manages the appearance of the radioSwatch.
|
/// Manages the appearance of the radioSwatch.
|
||||||
|
|
||||||
private var shapeLayer: CAShapeLayer?
|
private var shapeLayer: CAShapeLayer?
|
||||||
|
private var gradientLayer: CAGradientLayer?
|
||||||
|
|
||||||
open func getSelectorSize() -> CGSize {
|
open func getSelectorSize() -> CGSize {
|
||||||
return swatchSize
|
return swatchSize
|
||||||
@ -226,12 +228,35 @@ open class RadioSwatchBase<ModelType: RadioSwatchModel>: Control<ModelType>, Cha
|
|||||||
selectorView.layer.borderWidth = viewModel.selected ? selectorBorderWidth : 0
|
selectorView.layer.borderWidth = viewModel.selected ? selectorBorderWidth : 0
|
||||||
selectorView.layer.masksToBounds = true
|
selectorView.layer.masksToBounds = true
|
||||||
|
|
||||||
var fillColor: UIColor = viewModel.primaryColor ?? .white
|
gradientLayer?.removeFromSuperlayer()
|
||||||
fillView.backgroundColor = fillColor
|
gradientLayer = nil
|
||||||
|
|
||||||
|
var fillColorBackground: UIColor = .clear
|
||||||
|
|
||||||
|
if let fillImage = viewModel.fillImage {
|
||||||
|
fillView.image = viewModel.disabled ? fillImage.image(alpha: disabledAlpha) : fillImage
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fillView.image = nil
|
||||||
|
if let primary = viewModel.primaryColor, let secondary = viewModel.secondaryColor {
|
||||||
|
let firstColor = viewModel.disabled ? primary.withAlphaComponent(disabledAlpha) : primary
|
||||||
|
let secondColor = viewModel.disabled ? secondary.withAlphaComponent(disabledAlpha) : secondary
|
||||||
|
let gradient = CAGradientLayer()
|
||||||
|
gradientLayer = gradient
|
||||||
|
gradient.frame = fillView.bounds
|
||||||
|
gradient.colors = [secondColor.cgColor, secondColor.cgColor, firstColor.cgColor, firstColor.cgColor]
|
||||||
|
gradient.locations = [NSNumber(value: 0.0), NSNumber(value: 0.5), NSNumber(value: 0.5), NSNumber(value: 1.0)]
|
||||||
|
gradient.transform = CATransform3DMakeRotation(135.0 / 180.0 * .pi, 0.0, 0.0, 1.0)
|
||||||
|
fillView.layer.addSublayer(gradient)
|
||||||
|
} else {
|
||||||
|
fillColorBackground = viewModel.primaryColor ?? .white
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fillView.backgroundColor = viewModel.disabled ? fillColorBackground.withAlphaComponent(disabledAlpha) : fillColorBackground
|
||||||
fillView.layer.borderColor = fillBorderColor.cgColor
|
fillView.layer.borderColor = fillBorderColor.cgColor
|
||||||
fillView.layer.cornerRadius = fillView.bounds.width * 0.5
|
fillView.layer.cornerRadius = fillView.bounds.width * 0.5
|
||||||
fillView.layer.borderWidth = selectorBorderWidth
|
fillView.layer.borderWidth = selectorBorderWidth
|
||||||
|
fillView.layer.masksToBounds = true
|
||||||
setNeedsDisplay()
|
setNeedsDisplay()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,3 +295,13 @@ open class RadioSwatchBase<ModelType: RadioSwatchModel>: Control<ModelType>, Cha
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension UIImage {
|
||||||
|
func image(alpha: CGFloat) -> UIImage? {
|
||||||
|
UIGraphicsBeginImageContextWithOptions(size, false, scale)
|
||||||
|
draw(at: .zero, blendMode: .normal, alpha: alpha)
|
||||||
|
let newImage = UIGraphicsGetImageFromCurrentImageContext()
|
||||||
|
UIGraphicsEndImageContext()
|
||||||
|
return newImage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import Foundation
|
|||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
public protocol RadioSwatchModel: Modelable, FormFieldable, DataTrackable, Accessable, Selectable, BinaryColorable, Equatable {
|
public protocol RadioSwatchModel: Modelable, FormFieldable, DataTrackable, Accessable, Selectable, BinaryColorable, Equatable {
|
||||||
var fillImage: String? { get set }
|
var fillImage: UIImage? { get set }
|
||||||
var primaryColor: UIColor? { get set }
|
var primaryColor: UIColor? { get set }
|
||||||
var secondaryColor: UIColor? { get set }
|
var secondaryColor: UIColor? { get set }
|
||||||
var text: String { get set }
|
var text: String { get set }
|
||||||
@ -41,7 +41,7 @@ public struct DefaultRadioSwatchModel: RadioSwatchModel {
|
|||||||
|
|
||||||
public var selected: Bool = false
|
public var selected: Bool = false
|
||||||
|
|
||||||
public var fillImage: String?
|
public var fillImage: UIImage?
|
||||||
public var primaryColor: UIColor?
|
public var primaryColor: UIColor?
|
||||||
public var secondaryColor: UIColor?
|
public var secondaryColor: UIColor?
|
||||||
public var text: String = ""
|
public var text: String = ""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user