| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- #import "TextStorageTransition.h"
 - #import "RNNInterpolator.h"
 - 
 - @implementation TextStorageTransition {
 - 	UIColor* _fromColor;
 -     UIColor* _toColor;
 -     UIFont* _fromFont;
 -     UIFont* _toFont;
 - }
 - 
 - - (instancetype)initWithView:(UIView *)view from:(NSTextStorage *)from to:(NSTextStorage *)to startDelay:(NSTimeInterval)startDelay duration:(NSTimeInterval)duration interpolation:(Text *)interpolation {
 -     self = [super initWithView:view startDelay:startDelay duration:duration interpolation:interpolation];
 -     _from = from;
 -     _to = to;
 - 	[self prepareAnimationValues];
 -     return self;
 - }
 - 
 - - (void)prepareAnimationValues {
 -     NSRange range1;
 -     NSAttributedString* fromAttributes = [_from attributedSubstringFromRange:NSMakeRange(0, _from.string.length)];
 -     NSAttributedString* toAttributes = [_to attributedSubstringFromRange:NSMakeRange(0, _to.string.length)];
 -     
 -     _fromColor = [fromAttributes attribute:NSForegroundColorAttributeName atIndex:0 longestEffectiveRange:&range1 inRange:NSMakeRange(0, _from.string.length)] ?: UIColor.blackColor;
 -     _toColor = [toAttributes attribute:NSForegroundColorAttributeName atIndex:0 longestEffectiveRange:&range1 inRange:NSMakeRange(0, _to.string.length)] ?: UIColor.blackColor;
 -     
 -     _fromFont = [fromAttributes attribute:NSFontAttributeName atIndex:0 longestEffectiveRange:&range1 inRange:NSMakeRange(0, _from.string.length)];
 -     _toFont = [toAttributes attribute:NSFontAttributeName atIndex:0 longestEffectiveRange:&range1 inRange:NSMakeRange(0, _to.string.length)];
 - }
 - 
 - - (CATransform3D)animateWithProgress:(CGFloat)p {
 -     NSRange range = NSMakeRange(0, _from.string.length);
 -     UIColor* color = [RNNInterpolator fromColor:_fromColor toColor:_toColor precent:p];
 -     [_from addAttribute:NSForegroundColorAttributeName value:color range:range];
 -     CGFloat pointSize = [RNNInterpolator fromFloat:_fromFont.pointSize toFloat:_toFont.pointSize precent:p interpolation:self.interpolation];
 -     [_from addAttribute:NSFontAttributeName value:[_toFont fontWithSize:pointSize] range:range];
 - 	
 -     return CATransform3DIdentity;
 - }
 - 
 - - (void)end {
 -     NSRange range = NSMakeRange(0, _from.string.length);
 -     [_from addAttribute:NSFontAttributeName value:_fromFont range:range];
 -     [_from addAttribute:NSForegroundColorAttributeName value:_fromColor range:range];
 - }
 - 
 - @end
 
 
  |