latestest state. almost there

This commit is contained in:
Kevin G Christiano 2020-05-22 09:26:13 -04:00
parent cf5610ea26
commit 8a5a248628

View File

@ -61,8 +61,11 @@ open class LoadingSpinner: View {
} }
struct Pose { struct Pose {
/// Delayed time (in seconds) to execute after the previous Pose.
let delay: CFTimeInterval let delay: CFTimeInterval
/// The time into the animation to begin.
let start: CGFloat let start: CGFloat
/// The length of the drawn line.
let length: CGFloat let length: CGFloat
} }
@ -70,6 +73,7 @@ open class LoadingSpinner: View {
class var poses: [Pose] { class var poses: [Pose] {
get { get {
return [ return [
// Pose(delay: 0.0, start: 1.250, length: 0.7),
Pose(delay: 0.0, start: 0.000, length: 0.7), Pose(delay: 0.0, start: 0.000, length: 0.7),
Pose(delay: 0.7, start: 0.500, length: 0.5), Pose(delay: 0.7, start: 0.500, length: 0.5),
Pose(delay: 0.6, start: 1.000, length: 0.3), Pose(delay: 0.6, start: 1.000, length: 0.3),
@ -78,29 +82,19 @@ open class LoadingSpinner: View {
Pose(delay: 0.3, start: 2.250, length: 0.3), Pose(delay: 0.3, start: 2.250, length: 0.3),
Pose(delay: 0.2, start: 2.600, length: 0.5), Pose(delay: 0.2, start: 2.600, length: 0.5),
Pose(delay: 0.2, start: 3.000, length: 0.7) Pose(delay: 0.2, start: 3.000, length: 0.7)
// Pose(delay: 0.0, start: 0.000, length: 0.75),
// Pose(delay: 0.7, start: 0.500, length: 0.55),
// Pose(delay: 0.5, start: 1.000, length: 0.35),
// Pose(delay: 0.4, start: 1.500, length: 0.4),
// Pose(delay: 0.3, start: 1.875, length: 0.25),
// Pose(delay: 0.3, start: 2.250, length: 0.4),
// Pose(delay: 0.4, start: 2.600, length: 0.55),
// Pose(delay: 0.4, start: 3.000, length: 0.7)
] ]
} }
} }
// I like this
// Pose(delay: 0.0, start: 0.000, length: 0.75),
// Pose(delay: 0.7, start: 0.500, length: 0.55),
// Pose(delay: 0.5, start: 1.000, length: 0.35),
// Pose(delay: 0.4, start: 1.500, length: 0.4),
// Pose(delay: 0.3, start: 1.875, length: 0.25),
// Pose(delay: 0.3, start: 2.250, length: 0.4),
// Pose(delay: 0.4, start: 2.600, length: 0.55),
// Pose(delay: 0.4, start: 3.000, length: 0.7)
// Pose(delay: 0.0, start: 0.000, length: 0.7),
// Pose(delay: 0.7, start: 0.500, length: 0.5),
// Pose(delay: 0.6, start: 1.000, length: 0.3),
// Pose(delay: 0.5, start: 1.500, length: 0.2),
// Pose(delay: 0.4, start: 1.875, length: 0.2),
// Pose(delay: 0.3, start: 2.250, length: 0.3),
// Pose(delay: 0.2, start: 2.600, length: 0.5),
// Pose(delay: 0.2, start: 3.000, length: 0.7)
private func animate() { private func animate() {
var time: CFTimeInterval = 0 var time: CFTimeInterval = 0
var times = [CFTimeInterval]() var times = [CFTimeInterval]()
@ -119,10 +113,6 @@ open class LoadingSpinner: View {
strokeEnds.append(pose.length) strokeEnds.append(pose.length)
} }
// times.append(times.last ?? 1)
// rotations.append(rotations[0])
// strokeEnds.append(strokeEnds[0])
animateKeyPath(keyPath: "strokeEnd", duration: totalSeconds, times: times, values: strokeEnds) animateKeyPath(keyPath: "strokeEnd", duration: totalSeconds, times: times, values: strokeEnds)
animateKeyPath(keyPath: "transform.rotation", duration: totalSeconds, times: times, values: rotations) animateKeyPath(keyPath: "transform.rotation", duration: totalSeconds, times: times, values: rotations)
} }