From bced3600fc3ddb710f3aa5029945fd11fb08367a Mon Sep 17 00:00:00 2001 From: Kyle Matthew Hedden Date: Fri, 24 Jul 2020 12:19:48 -0400 Subject: [PATCH 1/3] adjust wheel animation to remain on CALayer and not hitting main CPU thread on every cycle. --- MVMCoreUI/Atomic/Atoms/Views/Wheel.swift | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/Wheel.swift b/MVMCoreUI/Atomic/Atoms/Views/Wheel.swift index da71ea0f..d81af71c 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/Wheel.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/Wheel.swift @@ -11,7 +11,7 @@ import UIKit @objcMembers open class Wheel: View, MVMCoreUIViewConstrainingProtocol { var heightConstraint: NSLayoutConstraint? - var gradientLayer: CALayer? + weak var gradientLayer: CALayer? var graphModel: WheelModel? { return model as? WheelModel } @@ -170,20 +170,9 @@ import UIKit rotation.timingFunction = CAMediaTimingFunction(name: .linear) rotation.fillMode = .both rotation.isRemovedOnCompletion = false + rotation.repeatCount = Float.greatestFiniteMagnitude - //avoid infinity animation take high CPU momery usage when layer is not displayed - rotation.delegate = self - rotation.repeatCount = 1 self.gradientLayer?.add(rotation, forKey: "rotation") }) } } - - -extension Wheel: CAAnimationDelegate { - public func animationDidStop(_ anim: CAAnimation, finished flag: Bool) { - if let object = graphModel { - rotationAnimation(object) - } - } -} From 7739b28306d6098a5ac00dd149dad2cc9b8b38e3 Mon Sep 17 00:00:00 2001 From: Damodaram <> Date: Thu, 30 Jul 2020 10:48:49 +0530 Subject: [PATCH 2/3] phone pad support added --- .../Atomic/Atoms/FormFields/TextFields/TextEntryField.swift | 3 +++ .../Atoms/FormFields/TextFields/TextEntryFieldModel.swift | 1 + 2 files changed, 4 insertions(+) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift index 2daee169..2c4aa736 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryField.swift @@ -323,6 +323,9 @@ import UIKit case .email: textField.keyboardType = .emailAddress + case .phone: + textField.keyboardType = .phonePad + default: break } diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift index db5f3724..6f54cb38 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/TextEntryFieldModel.swift @@ -18,6 +18,7 @@ case number case email case text + case phone } //-------------------------------------------------- From 579648a5856f63e6da1a6eba925e243a9e3bc0f7 Mon Sep 17 00:00:00 2001 From: Damodaram <> Date: Thu, 30 Jul 2020 17:36:40 +0530 Subject: [PATCH 3/3] base value issue fixed --- .../FormFields/TextFields/ItemDropdownEntryFieldModel.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift index 979fac4d..d89f5e16 100644 --- a/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift +++ b/MVMCoreUI/Atomic/Atoms/FormFields/TextFields/ItemDropdownEntryFieldModel.swift @@ -45,6 +45,7 @@ if let selectedIndex = try typeContainer.decodeIfPresent(Int.self, forKey: .selectedIndex) { self.selectedIndex = selectedIndex } + baseValue = options.indices.contains(selectedIndex) ? options[selectedIndex] : nil } public override func encode(to encoder: Encoder) throws {