arrow updates.
This commit is contained in:
parent
ed34ae3c19
commit
bdda06629f
@ -20,6 +20,33 @@ open class Arrow: View {
|
|||||||
return model as? ArrowModel
|
return model as? ArrowModel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open var isEnabled: Bool = true {
|
||||||
|
didSet {
|
||||||
|
isUserInteractionEnabled = isEnabled
|
||||||
|
setNeedsDisplay()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open var disabledColor: UIColor {
|
||||||
|
get { return arrowModel?.disabledColor.uiColor ?? .mvmCoolGray3 }
|
||||||
|
set { arrowModel?.disabledColor = Color(uiColor: newValue) }
|
||||||
|
}
|
||||||
|
|
||||||
|
open var color: UIColor {
|
||||||
|
get { return arrowModel?.color.uiColor ?? .mvmBlack }
|
||||||
|
set { arrowModel?.color = Color(uiColor: newValue) }
|
||||||
|
}
|
||||||
|
|
||||||
|
open var degrees: Float {
|
||||||
|
get { return arrowModel?.degrees ?? 0 }
|
||||||
|
set { arrowModel?.degrees = newValue }
|
||||||
|
}
|
||||||
|
|
||||||
|
open var lineWidth: CGFloat {
|
||||||
|
get { return arrowModel?.lineWidth ?? 1 }
|
||||||
|
set { arrowModel?.lineWidth = newValue }
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Constraints
|
// MARK: - Constraints
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -88,7 +115,7 @@ open class Arrow: View {
|
|||||||
private func drawShapeLayer() {
|
private func drawShapeLayer() {
|
||||||
|
|
||||||
arrowLayer.frame = bounds
|
arrowLayer.frame = bounds
|
||||||
arrowLayer.strokeColor = arrowModel?.color.cgColor
|
arrowLayer.strokeColor = isEnabled ? arrowModel?.color.cgColor : arrowModel?.disabledColor.cgColor
|
||||||
arrowLayer.fillColor = UIColor.clear.cgColor
|
arrowLayer.fillColor = UIColor.clear.cgColor
|
||||||
arrowLayer.path = arrowPath()
|
arrowLayer.path = arrowPath()
|
||||||
arrowLayer.lineJoin = .miter
|
arrowLayer.lineJoin = .miter
|
||||||
|
|||||||
@ -20,22 +20,20 @@ open class ArrowModel: MoleculeModelProtocol {
|
|||||||
|
|
||||||
public var moleculeName: String?
|
public var moleculeName: String?
|
||||||
public var backgroundColor: Color?
|
public var backgroundColor: Color?
|
||||||
|
public var disabledColor: Color = Color(uiColor: .mvmCoolGray3)
|
||||||
public var enabledColor: Color?
|
|
||||||
public var disabledColor: Color?
|
|
||||||
public var color: Color = Color(uiColor: .mvmBlack)
|
public var color: Color = Color(uiColor: .mvmBlack)
|
||||||
public var degrees: Float = 0
|
public var degrees: Float = 0
|
||||||
public var lineWidth: CGFloat = 1
|
public var lineWidth: CGFloat = 1
|
||||||
|
|
||||||
public var height: CGFloat = 12
|
public var height: CGFloat = 12
|
||||||
public var width: CGFloat = 12
|
public var width: CGFloat = 12
|
||||||
|
public var isEnabled: Bool = true
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Initializer
|
// MARK: - Initializer
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
|
|
||||||
public init() { }
|
public init() { }
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
// MARK: - Keys
|
// MARK: - Keys
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -43,14 +41,13 @@ open class ArrowModel: MoleculeModelProtocol {
|
|||||||
private enum CodingKeys: String, CodingKey {
|
private enum CodingKeys: String, CodingKey {
|
||||||
case moleculeName
|
case moleculeName
|
||||||
case backgroundColor
|
case backgroundColor
|
||||||
case enabledColor
|
|
||||||
case disabledColor
|
case disabledColor
|
||||||
case color
|
case color
|
||||||
case degrees
|
case degrees
|
||||||
case size
|
|
||||||
case lineWidth
|
case lineWidth
|
||||||
case height
|
case height
|
||||||
case width
|
case width
|
||||||
|
case isEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------
|
//--------------------------------------------------
|
||||||
@ -59,17 +56,21 @@ open class ArrowModel: MoleculeModelProtocol {
|
|||||||
|
|
||||||
required public init(from decoder: Decoder) throws {
|
required public init(from decoder: Decoder) throws {
|
||||||
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
let typeContainer = try decoder.container(keyedBy: CodingKeys.self)
|
||||||
|
|
||||||
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
|
||||||
disabledColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledColor)
|
|
||||||
enabledColor = try typeContainer.decodeIfPresent(Color.self, forKey: .enabledColor)
|
|
||||||
|
|
||||||
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
backgroundColor = try typeContainer.decodeIfPresent(Color.self, forKey: .backgroundColor)
|
||||||
|
|
||||||
|
if let disabledColor = try typeContainer.decodeIfPresent(Color.self, forKey: .disabledColor) {
|
||||||
|
self.disabledColor = disabledColor
|
||||||
|
}
|
||||||
|
|
||||||
if let color = try typeContainer.decodeIfPresent(Color.self, forKey: .color) {
|
if let color = try typeContainer.decodeIfPresent(Color.self, forKey: .color) {
|
||||||
self.color = color
|
self.color = color
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let isEnabled = try typeContainer.decodeIfPresent(Bool.self, forKey: .isEnabled) {
|
||||||
|
self.isEnabled = isEnabled
|
||||||
|
}
|
||||||
|
|
||||||
if let degrees = try typeContainer.decodeIfPresent(Float.self, forKey: .degrees) {
|
if let degrees = try typeContainer.decodeIfPresent(Float.self, forKey: .degrees) {
|
||||||
self.degrees = degrees
|
self.degrees = degrees
|
||||||
}
|
}
|
||||||
@ -79,7 +80,7 @@ open class ArrowModel: MoleculeModelProtocol {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let height = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .height) {
|
if let height = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .height) {
|
||||||
self.lineWidth = height
|
self.height = height
|
||||||
}
|
}
|
||||||
|
|
||||||
if let width = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .width) {
|
if let width = try typeContainer.decodeIfPresent(CGFloat.self, forKey: .width) {
|
||||||
@ -89,17 +90,14 @@ open class ArrowModel: MoleculeModelProtocol {
|
|||||||
|
|
||||||
public func encode(to encoder: Encoder) throws {
|
public func encode(to encoder: Encoder) throws {
|
||||||
var container = encoder.container(keyedBy: CodingKeys.self)
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
||||||
|
|
||||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
||||||
try container.encodeIfPresent(enabledColor, forKey: .enabledColor)
|
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
try container.encode(moleculeName, forKey: .moleculeName)
|
||||||
try container.encodeIfPresent(disabledColor, forKey: .disabledColor)
|
try container.encode(disabledColor, forKey: .disabledColor)
|
||||||
try container.encode(moleculeName, forKey: .moleculeName)
|
|
||||||
try container.encodeIfPresent(backgroundColor, forKey: .backgroundColor)
|
|
||||||
try container.encode(color, forKey: .color)
|
try container.encode(color, forKey: .color)
|
||||||
try container.encode(degrees, forKey: .degrees)
|
try container.encode(degrees, forKey: .degrees)
|
||||||
try container.encodeIfPresent(backgroundColor, forKey: .lineWidth)
|
try container.encode(lineWidth, forKey: .lineWidth)
|
||||||
try container.encode(width, forKey: .width)
|
try container.encode(width, forKey: .width)
|
||||||
try container.encode(height, forKey: .height)
|
try container.encode(height, forKey: .height)
|
||||||
|
try container.encode(isEnabled, forKey: .isEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user