Power saving UI improvements

This commit is contained in:
Ali
2023-03-01 16:13:20 +04:00
parent 7091eea37e
commit d088449371
10 changed files with 172 additions and 27 deletions

View File

@@ -905,6 +905,35 @@ public extension ContainedViewLayoutTransition {
}
}
func updateTintColor(layer: CALayer, color: UIColor, completion: ((Bool) -> Void)? = nil) {
if let current = layer.layerTintColor, current == color.cgColor {
completion?(true)
return
}
switch self {
case .immediate:
layer.layerTintColor = color.cgColor
completion?(true)
case let .animated(duration, curve):
let previousColor: CGColor = layer.layerTintColor ?? UIColor.clear.cgColor
layer.layerTintColor = color.cgColor
layer.animate(
from: previousColor,
to: color.cgColor,
keyPath: "contentsMultiplyColor",
timingFunction: curve.timingFunction,
duration: duration,
delay: 0.0,
mediaTimingFunction: curve.mediaTimingFunction,
removeOnCompletion: true,
additive: false,
completion: completion
)
}
}
func updateContentsRect(layer: CALayer, contentsRect: CGRect, completion: ((Bool) -> Void)? = nil) {
if layer.contentsRect == contentsRect {
if let completion = completion {