@@ -9,6 +9,9 @@ import UIKit
99
1010extension UIColor : Interpolatable {
1111 // TODO: check alternative interpolations https://raphlinus.github.io/color/2021/01/18/oklab-critique.html
12+ private static func clamp01( _ value: CGFloat ) -> CGFloat {
13+ return min ( 1 , max ( 0 , value) )
14+ }
1215
1316 private func rgbaComponents( ) -> ( CGFloat , CGFloat , CGFloat , CGFloat ) {
1417 var r : CGFloat = 0
@@ -82,10 +85,10 @@ extension UIColor: Interpolatable {
8285 let ( h2, s2, b2, a2) = to. hsbComponents ( )
8386
8487 return Self (
85- hue: h1. interpolate ( to: h2, progress: progress, easing: easing) ,
86- saturation: s1. interpolate ( to: s2, progress: progress, easing: easing) ,
87- brightness: b1. interpolate ( to: b2, progress: progress, easing: easing) ,
88- alpha: a1. interpolate ( to: a2, progress: progress, easing: easing)
88+ hue: Self . clamp01 ( h1. interpolate ( to: h2, progress: progress, easing: easing) ) ,
89+ saturation: Self . clamp01 ( s1. interpolate ( to: s2, progress: progress, easing: easing) ) ,
90+ brightness: Self . clamp01 ( b1. interpolate ( to: b2, progress: progress, easing: easing) ) ,
91+ alpha: Self . clamp01 ( a1. interpolate ( to: a2, progress: progress, easing: easing) )
8992 )
9093 }
9194
@@ -95,10 +98,10 @@ extension UIColor: Interpolatable {
9598 let ( r2, g2, b2, a2) = to. rgbaComponents ( )
9699
97100 return Self (
98- red: r1. interpolate ( to: r2, progress: progress, easing: easing) ,
99- green: g1. interpolate ( to: g2, progress: progress, easing: easing) ,
100- blue: b1. interpolate ( to: b2, progress: progress, easing: easing) ,
101- alpha: a1. interpolate ( to: a2, progress: progress, easing: easing)
101+ red: Self . clamp01 ( r1. interpolate ( to: r2, progress: progress, easing: easing) ) ,
102+ green: Self . clamp01 ( g1. interpolate ( to: g2, progress: progress, easing: easing) ) ,
103+ blue: Self . clamp01 ( b1. interpolate ( to: b2, progress: progress, easing: easing) ) ,
104+ alpha: Self . clamp01 ( a1. interpolate ( to: a2, progress: progress, easing: easing) )
102105 )
103106 }
104107}
0 commit comments