1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- * This file is part of the SDWebImage package.
- * (c) Olivier Poitrey <rs@dailymotion.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- #import "BU_SDWebImageCompat.h"
- #if SD_UIKIT || SD_MAC
- #import "BU_SDImageCache.h"
- #if SD_UIKIT
- typedef UIViewAnimationOptions SDWebImageAnimationOptions;
- #else
- typedef NS_OPTIONS(NSUInteger, SDWebImageAnimationOptions) {
- SDWebImageAnimationOptionAllowsImplicitAnimation = 1 << 0, // specify `allowsImplicitAnimation` for the `NSAnimationContext`
- };
- #endif
- typedef void (^SDWebImageTransitionPreparesBlock)(__kindof UIView * _Nonnull view, UIImage * _Nullable image, NSData * _Nullable imageData, BU_SDImageCacheType cacheType, NSURL * _Nullable imageURL);
- typedef void (^SDWebImageTransitionAnimationsBlock)(__kindof UIView * _Nonnull view, UIImage * _Nullable image);
- typedef void (^SDWebImageTransitionCompletionBlock)(BOOL finished);
- /**
- This class is used to provide a transition animation after the view category load image finished. Use this on `sdBu_imageTransition` in UIView+BU_WebCache.h
- for UIKit(iOS & tvOS), we use `+[UIView transitionWithView:duration:options:animations:completion]` for transition animation.
- for AppKit(macOS), we use `+[NSAnimationContext runAnimationGroup:completionHandler:]` for transition animation. You can call `+[NSAnimationContext currentContext]` to grab the context during animations block.
- @note These transition are provided for basic usage. If you need complicated animation, consider to directly use Core Animation or use `SDWebImageAvoidAutoSetImage` and implement your own after image load finished.
- */
- @interface BU_SDWebImageTransition : NSObject
- /**
- By default, we set the image to the view at the beginning of the animtions. You can disable this and provide custom set image process
- */
- @property (nonatomic, assign) BOOL avoidAutoSetImage;
- /**
- The duration of the transition animation, measured in seconds. Defaults to 0.5.
- */
- @property (nonatomic, assign) NSTimeInterval duration;
- /**
- The timing function used for all animations within this transition animation (macOS).
- */
- @property (nonatomic, strong, nullable) CAMediaTimingFunction *timingFunction API_UNAVAILABLE(ios, tvos, watchos);
- /**
- A mask of options indicating how you want to perform the animations.
- */
- @property (nonatomic, assign) SDWebImageAnimationOptions animationOptions;
- /**
- A block object to be executed before the animation sequence starts.
- */
- @property (nonatomic, copy, nullable) SDWebImageTransitionPreparesBlock prepares;
- /**
- A block object that contains the changes you want to make to the specified view.
- */
- @property (nonatomic, copy, nullable) SDWebImageTransitionAnimationsBlock animations;
- /**
- A block object to be executed when the animation sequence ends.
- */
- @property (nonatomic, copy, nullable) SDWebImageTransitionCompletionBlock completion;
- @end
- /**
- Convenience way to create transition. Remember to specify the duration if needed.
- for UIKit, these transition just use the correspond `animationOptions`. By default we enable `UIViewAnimationOptionAllowUserInteraction` to allow user interaction during transition.
- for AppKit, these transition use Core Animation in `animations`. So your view must be layer-backed. Set `wantsLayer = YES` before you apply it.
- */
- //@interface BU_SDWebImageTransition (Conveniences)
- //
- ///// Fade transition.
- ////@property (nonatomic, class, nonnull, readonly) BU_SDWebImageTransition *fadeTransition;
- ///// Flip from left transition.
- ////@property (nonatomic, class, nonnull, readonly) BU_SDWebImageTransition *flipFromLeftTransition;
- ///// Flip from right transition.
- //@property (nonatomic, class, nonnull, readonly) BU_SDWebImageTransition *flipFromRightTransition;
- ///// Flip from top transition.
- //@property (nonatomic, class, nonnull, readonly) BU_SDWebImageTransition *flipFromTopTransition;
- ///// Flip from bottom transition.
- //@property (nonatomic, class, nonnull, readonly) BU_SDWebImageTransition *flipFromBottomTransition;
- ///// Curl up transition.
- //@property (nonatomic, class, nonnull, readonly) BU_SDWebImageTransition *curlUpTransition;
- ///// Curl down transition.
- //@property (nonatomic, class, nonnull, readonly) BU_SDWebImageTransition *curlDownTransition;
- //
- //@end
- #endif
|