/* * This file is part of the SDWebImage package. * (c) Olivier Poitrey * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ #import "SDWebImageCompat.h" #if SD_UIKIT || SD_MAC /** A protocol to custom the indicator during the image loading. All of these methods are called from main queue. */ @protocol SDWebImageIndicator @required /** The view associate to the indicator. @return The indicator view */ @property (nonatomic, strong, readonly, nonnull) UIView *indicatorView; /** Start the animating for indicator. */ - (void)startAnimatingIndicator; /** Stop the animating for indicator. */ - (void)stopAnimatingIndicator; @optional /** Update the loading progress (0-1.0) for indicator. Optional @param progress The progress, value between 0 and 1.0 */ - (void)updateIndicatorProgress:(double)progress; @end #pragma mark - Activity Indicator /** Activity indicator class. for UIKit(macOS), it use a `UIActivityIndicatorView`. for AppKit(macOS), it use a `NSProgressIndicator` with the spinning style. */ @interface SDWebImageActivityIndicator : NSObject #if SD_UIKIT @property (nonatomic, strong, readonly, nonnull) UIActivityIndicatorView *indicatorView; #else @property (nonatomic, strong, readonly, nonnull) NSProgressIndicator *indicatorView; #endif @end /** Convenience way to use activity indicator. */ @interface SDWebImageActivityIndicator (Conveniences) /// gray-style activity indicator @property (nonatomic, class, nonnull, readonly) SDWebImageActivityIndicator *grayIndicator; /// large gray-style activity indicator @property (nonatomic, class, nonnull, readonly) SDWebImageActivityIndicator *grayLargeIndicator; /// white-style activity indicator @property (nonatomic, class, nonnull, readonly) SDWebImageActivityIndicator *whiteIndicator; /// large white-style activity indicator @property (nonatomic, class, nonnull, readonly) SDWebImageActivityIndicator *whiteLargeIndicator; @end #pragma mark - Progress Indicator /** Progress indicator class. for UIKit(macOS), it use a `UIProgressView`. for AppKit(macOS), it use a `NSProgressIndicator` with the bar style. */ @interface SDWebImageProgressIndicator : NSObject #if SD_UIKIT @property (nonatomic, strong, readonly, nonnull) UIProgressView *indicatorView; #else @property (nonatomic, strong, readonly, nonnull) NSProgressIndicator *indicatorView; #endif @end /** Convenience way to create progress indicator. Remember to specify the indicator width or use layout constraint if need. */ @interface SDWebImageProgressIndicator (Conveniences) /// default-style progress indicator @property (nonatomic, class, nonnull, readonly) SDWebImageProgressIndicator *defaultIndicator; /// bar-style progress indicator @property (nonatomic, class, nonnull, readonly) SDWebImageProgressIndicator *barIndicator API_UNAVAILABLE(macos, tvos); @end #endif