|
|
@@ -11,7 +11,62 @@
|
|
|
#if SD_UIKIT || SD_MAC
|
|
|
|
|
|
#if SD_MAC
|
|
|
-#import <QuartzCore/QuartzCore.h>
|
|
|
+#import "SDWebImageTransitionInternal.h"
|
|
|
+#import "SDInternalMacros.h"
|
|
|
+
|
|
|
+CAMediaTimingFunction * SDTimingFunctionFromAnimationOptions(SDWebImageAnimationOptions options) {
|
|
|
+ if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveLinear, options)) {
|
|
|
+ return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveEaseIn, options)) {
|
|
|
+ return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveEaseOut, options)) {
|
|
|
+ return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(SDWebImageAnimationOptionCurveEaseInOut, options)) {
|
|
|
+ return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
|
|
|
+ } else {
|
|
|
+ return [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+CATransition * SDTransitionFromAnimationOptions(SDWebImageAnimationOptions options) {
|
|
|
+ if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionCrossDissolve)) {
|
|
|
+ CATransition *trans = [CATransition animation];
|
|
|
+ trans.type = kCATransitionFade;
|
|
|
+ return trans;
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromLeft)) {
|
|
|
+ CATransition *trans = [CATransition animation];
|
|
|
+ trans.type = kCATransitionPush;
|
|
|
+ trans.subtype = kCATransitionFromLeft;
|
|
|
+ return trans;
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromRight)) {
|
|
|
+ CATransition *trans = [CATransition animation];
|
|
|
+ trans.type = kCATransitionPush;
|
|
|
+ trans.subtype = kCATransitionFromRight;
|
|
|
+ return trans;
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromTop)) {
|
|
|
+ CATransition *trans = [CATransition animation];
|
|
|
+ trans.type = kCATransitionPush;
|
|
|
+ trans.subtype = kCATransitionFromTop;
|
|
|
+ return trans;
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionFlipFromBottom)) {
|
|
|
+ CATransition *trans = [CATransition animation];
|
|
|
+ trans.type = kCATransitionPush;
|
|
|
+ trans.subtype = kCATransitionFromBottom;
|
|
|
+ return trans;
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionCurlUp)) {
|
|
|
+ CATransition *trans = [CATransition animation];
|
|
|
+ trans.type = kCATransitionReveal;
|
|
|
+ trans.subtype = kCATransitionFromTop;
|
|
|
+ return trans;
|
|
|
+ } else if (SD_OPTIONS_CONTAINS(options, SDWebImageAnimationOptionTransitionCurlDown)) {
|
|
|
+ CATransition *trans = [CATransition animation];
|
|
|
+ trans.type = kCATransitionReveal;
|
|
|
+ trans.subtype = kCATransitionFromBottom;
|
|
|
+ return trans;
|
|
|
+ } else {
|
|
|
+ return nil;
|
|
|
+ }
|
|
|
+}
|
|
|
#endif
|
|
|
|
|
|
@implementation SDWebImageTransition
|
|
|
@@ -33,11 +88,7 @@
|
|
|
#if SD_UIKIT
|
|
|
transition.animationOptions = UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction;
|
|
|
#else
|
|
|
- transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
|
|
|
- CATransition *trans = [CATransition animation];
|
|
|
- trans.type = kCATransitionFade;
|
|
|
- [view.layer addAnimation:trans forKey:kCATransition];
|
|
|
- };
|
|
|
+ transition.animationOptions = SDWebImageAnimationOptionTransitionCrossDissolve;
|
|
|
#endif
|
|
|
return transition;
|
|
|
}
|
|
|
@@ -47,12 +98,7 @@
|
|
|
#if SD_UIKIT
|
|
|
transition.animationOptions = UIViewAnimationOptionTransitionFlipFromLeft | UIViewAnimationOptionAllowUserInteraction;
|
|
|
#else
|
|
|
- transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
|
|
|
- CATransition *trans = [CATransition animation];
|
|
|
- trans.type = kCATransitionPush;
|
|
|
- trans.subtype = kCATransitionFromLeft;
|
|
|
- [view.layer addAnimation:trans forKey:kCATransition];
|
|
|
- };
|
|
|
+ transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromLeft;
|
|
|
#endif
|
|
|
return transition;
|
|
|
}
|
|
|
@@ -62,12 +108,7 @@
|
|
|
#if SD_UIKIT
|
|
|
transition.animationOptions = UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionAllowUserInteraction;
|
|
|
#else
|
|
|
- transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
|
|
|
- CATransition *trans = [CATransition animation];
|
|
|
- trans.type = kCATransitionPush;
|
|
|
- trans.subtype = kCATransitionFromRight;
|
|
|
- [view.layer addAnimation:trans forKey:kCATransition];
|
|
|
- };
|
|
|
+ transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromRight;
|
|
|
#endif
|
|
|
return transition;
|
|
|
}
|
|
|
@@ -77,12 +118,7 @@
|
|
|
#if SD_UIKIT
|
|
|
transition.animationOptions = UIViewAnimationOptionTransitionFlipFromTop | UIViewAnimationOptionAllowUserInteraction;
|
|
|
#else
|
|
|
- transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
|
|
|
- CATransition *trans = [CATransition animation];
|
|
|
- trans.type = kCATransitionPush;
|
|
|
- trans.subtype = kCATransitionFromTop;
|
|
|
- [view.layer addAnimation:trans forKey:kCATransition];
|
|
|
- };
|
|
|
+ transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromTop;
|
|
|
#endif
|
|
|
return transition;
|
|
|
}
|
|
|
@@ -92,12 +128,7 @@
|
|
|
#if SD_UIKIT
|
|
|
transition.animationOptions = UIViewAnimationOptionTransitionFlipFromBottom | UIViewAnimationOptionAllowUserInteraction;
|
|
|
#else
|
|
|
- transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
|
|
|
- CATransition *trans = [CATransition animation];
|
|
|
- trans.type = kCATransitionPush;
|
|
|
- trans.subtype = kCATransitionFromBottom;
|
|
|
- [view.layer addAnimation:trans forKey:kCATransition];
|
|
|
- };
|
|
|
+ transition.animationOptions = SDWebImageAnimationOptionTransitionFlipFromBottom;
|
|
|
#endif
|
|
|
return transition;
|
|
|
}
|
|
|
@@ -107,12 +138,7 @@
|
|
|
#if SD_UIKIT
|
|
|
transition.animationOptions = UIViewAnimationOptionTransitionCurlUp | UIViewAnimationOptionAllowUserInteraction;
|
|
|
#else
|
|
|
- transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
|
|
|
- CATransition *trans = [CATransition animation];
|
|
|
- trans.type = kCATransitionReveal;
|
|
|
- trans.subtype = kCATransitionFromTop;
|
|
|
- [view.layer addAnimation:trans forKey:kCATransition];
|
|
|
- };
|
|
|
+ transition.animationOptions = SDWebImageAnimationOptionTransitionCurlUp;
|
|
|
#endif
|
|
|
return transition;
|
|
|
}
|
|
|
@@ -122,12 +148,7 @@
|
|
|
#if SD_UIKIT
|
|
|
transition.animationOptions = UIViewAnimationOptionTransitionCurlDown | UIViewAnimationOptionAllowUserInteraction;
|
|
|
#else
|
|
|
- transition.animations = ^(__kindof NSView * _Nonnull view, NSImage * _Nullable image) {
|
|
|
- CATransition *trans = [CATransition animation];
|
|
|
- trans.type = kCATransitionReveal;
|
|
|
- trans.subtype = kCATransitionFromBottom;
|
|
|
- [view.layer addAnimation:trans forKey:kCATransition];
|
|
|
- };
|
|
|
+ transition.animationOptions = SDWebImageAnimationOptionTransitionCurlDown;
|
|
|
#endif
|
|
|
return transition;
|
|
|
}
|