| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 | // TDSProgressHUD#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>#import <CoreGraphics/CoreGraphics.h>@class TDSBackgroundView;@protocol TDSProgressHUDDelegate;extern CGFloat const TDSProgressMaxOffset;typedef NS_ENUM(NSInteger, TDSProgressHUDMode) {    /// UIActivityIndicatorView.    TDSProgressHUDModeIndeterminate,    /// A round, pie-chart like, progress view.    TDSProgressHUDModeDeterminate,    /// Horizontal progress bar.    TDSProgressHUDModeDeterminateHorizontalBar,    /// Ring-shaped progress view.    TDSProgressHUDModeAnnularDeterminate,    /// Shows a custom view.    TDSProgressHUDModeCustomView,    /// Shows only labels.    TDSProgressHUDModeText};typedef NS_ENUM(NSInteger, TDSProgressHUDAnimation) {    /// Opacity animation    TDSProgressHUDAnimationFade,    /// Opacity + scale animation (zoom in when appearing zoom out when disappearing)    TDSProgressHUDAnimationZoom,    /// Opacity + scale animation (zoom out style)    TDSProgressHUDAnimationZoomOut,    /// Opacity + scale animation (zoom in style)    TDSProgressHUDAnimationZoomIn};typedef NS_ENUM(NSInteger, TDSProgressHUDBackgroundStyle) {    /// Solid color background    TDSProgressHUDBackgroundStyleSolidColor,    /// UIVisualEffectView or UIToolbar.layer background view    TDSProgressHUDBackgroundStyleBlur};typedef void (^TDSProgressHUDCompletionBlock)(void);NS_ASSUME_NONNULL_BEGIN/** * Displays a simple HUD window containing a progress indicator and two optional labels for short messages. * * This is a simple drop-in class for displaying a progress HUD view similar to Apple's private UIProgressHUD class. * The XDGProgressHUD window spans over the entire space given to it by the initWithFrame: constructor and catches all * user input on this region, thereby preventing the user operations on components below the view. * * @note To still allow touches to pass through the HUD, you can set hud.userInteractionEnabled = NO. * @attention XDGProgressHUD is a UI class and should therefore only be accessed on the main thread. */@interface TDSProgressHUD : UIView/** * Creates a new HUD, adds it to provided view and shows it. The counterpart to this method is hideHUDForView:animated:. * * @note This method sets removeFromSuperViewOnHide. The HUD will automatically be removed from the view hierarchy when hidden. * * @param view The view that the HUD will be added to * @param animated If set to YES the HUD will appear using the current animationType. If set to NO the HUD will not use * animations while appearing. * @return A reference to the created HUD. * * @see hideHUDForView:animated: * @see animationType */+ (instancetype)showHUDAddedTo:(UIView *)view animated:(BOOL)animated;/// @name Showing and hiding/** * Finds the top-most HUD subview that hasn't finished and hides it. The counterpart to this method is showHUDAddedTo:animated:. * * @note This method sets removeFromSuperViewOnHide. The HUD will automatically be removed from the view hierarchy when hidden. * * @param view The view that is going to be searched for a HUD subview. * @param animated If set to YES the HUD will disappear using the current animationType. If set to NO the HUD will not use * animations while disappearing. * @return YES if a HUD was found and removed, NO otherwise. * * @see showHUDAddedTo:animated: * @see animationType */+ (BOOL)hideHUDForView:(UIView *)view animated:(BOOL)animated;/** * Finds the top-most HUD subview that hasn't finished and returns it. * * @param view The view that is going to be searched. * @return A reference to the last HUD subview discovered. */+ (nullable TDSProgressHUD *)HUDForView:(UIView *)view NS_SWIFT_NAME(forView(_:));/** * A convenience constructor that initializes the HUD with the view's bounds. Calls the designated constructor with * view.bounds as the parameter. * * @param view The view instance that will provide the bounds for the HUD. Should be the same instance as * the HUD's superview (i.e., the view that the HUD will be added to). */- (instancetype)initWithView:(UIView *)view;/** * Displays the HUD. * * @note You need to make sure that the main thread completes its run loop soon after this method call so that * the user interface can be updated. Call this method when your task is already set up to be executed in a new thread * (e.g., when using something like NSOperation or making an asynchronous call like NSURLRequest). * * @param animated If set to YES the HUD will appear using the current animationType. If set to NO the HUD will not use * animations while appearing. * * @see animationType */- (void)showAnimated:(BOOL)animated;/** * Hides the HUD. This still calls the hudWasHidden: delegate. This is the counterpart of the show: method. Use it to * hide the HUD when your task completes. * * @param animated If set to YES the HUD will disappear using the current animationType. If set to NO the HUD will not use * animations while disappearing. * * @see animationType */- (void)hideAnimated:(BOOL)animated;/** * Hides the HUD after a delay. This still calls the hudWasHidden: delegate. This is the counterpart of the show: method. Use it to * hide the HUD when your task completes. * * @param animated If set to YES the HUD will disappear using the current animationType. If set to NO the HUD will not use * animations while disappearing. * @param delay Delay in seconds until the HUD is hidden. * * @see animationType */- (void)hideAnimated:(BOOL)animated afterDelay:(NSTimeInterval)delay;/** * The HUD delegate object. Receives HUD state notifications. */@property (weak, nonatomic) id<TDSProgressHUDDelegate> delegate;/** * Called after the HUD is hidden. */@property (copy, nullable) TDSProgressHUDCompletionBlock completionBlock;/** * Grace period is the time (in seconds) that the invoked method may be run without * showing the HUD. If the task finishes before the grace time runs out, the HUD will * not be shown at all. * This may be used to prevent HUD display for very short tasks. * Defaults to 0 (no grace time). * @note The graceTime needs to be set before the hud is shown. You thus can't use `showHUDAddedTo:animated:`, * but instead need to alloc / init the HUD, configure the grace time and than show it manually. */@property (assign, nonatomic) NSTimeInterval graceTime;/** * The minimum time (in seconds) that the HUD is shown. * This avoids the problem of the HUD being shown and than instantly hidden. * Defaults to 0 (no minimum show time). */@property (assign, nonatomic) NSTimeInterval minShowTime;/** * Removes the HUD from its parent view when hidden. * Defaults to NO. */@property (assign, nonatomic) BOOL removeFromSuperViewOnHide;/// @name Appearance/** * XDGProgressHUD operation mode. The default is TDSProgressHUDModeIndeterminate. */@property (assign, nonatomic) TDSProgressHUDMode mode;/** * A color that gets forwarded to all labels and supported indicators. Also sets the tintColor * for custom views on iOS 7+. Set to nil to manage color individually. * Defaults to semi-translucent black on iOS 7 and later and white on earlier iOS versions. */@property (strong, nonatomic, nullable) UIColor *contentColor UI_APPEARANCE_SELECTOR;/** * The animation type that should be used when the HUD is shown and hidden. */@property (assign, nonatomic) TDSProgressHUDAnimation animationType UI_APPEARANCE_SELECTOR;/** * The bezel offset relative to the center of the view. You can use TDSProgressMaxOffset * and -TDSProgressMaxOffset to move the HUD all the way to the screen edge in each direction. * E.g., CGPointMake(0.f, TDSProgressMaxOffset) would position the HUD centered on the bottom edge. */@property (assign, nonatomic) CGPoint offset UI_APPEARANCE_SELECTOR;/** * The amount of space between the HUD edge and the HUD elements (labels, indicators or custom views). * This also represents the minimum bezel distance to the edge of the HUD view. * Defaults to 20.f */@property (assign, nonatomic) CGFloat margin UI_APPEARANCE_SELECTOR;/** Defaults to 13.f*/@property (assign, nonatomic) CGFloat verticalMargin UI_APPEARANCE_SELECTOR;/** * The minimum size of the HUD bezel. Defaults to CGSizeZero (no minimum size). */@property (assign, nonatomic) CGSize minSize UI_APPEARANCE_SELECTOR;/** * Force the HUD dimensions to be equal if possible. */@property (assign, nonatomic, getter = isSquare) BOOL square UI_APPEARANCE_SELECTOR;/** * When enabled, the bezel center gets slightly affected by the device accelerometer data. * Defaults to NO. * * @note This can cause main thread checker assertions on certain devices. https://github.com/jdg/XDGProgressHUD/issues/552 */@property (assign, nonatomic, getter=areDefaultMotionEffectsEnabled) BOOL defaultMotionEffectsEnabled UI_APPEARANCE_SELECTOR;/// @name Progress/** * The progress of the progress indicator, from 0.0 to 1.0. Defaults to 0.0. */@property (assign, nonatomic) float progress;/// @name ProgressObject/** * The NSProgress object feeding the progress information to the progress indicator. */@property (strong, nonatomic, nullable) NSProgress *progressObject;/// @name Views/** * The view containing the labels and indicator (or customView). */@property (strong, nonatomic, readonly)TDSBackgroundView *bezelView;/** * View covering the entire HUD area, placed behind bezelView. */@property (strong, nonatomic, readonly)TDSBackgroundView *backgroundView;/** * The UIView (e.g., a UIImageView) to be shown when the HUD is in TDSProgressHUDModeCustomView. * The view should implement intrinsicContentSize for proper sizing. For best results use approximately 37 by 37 pixels. */@property (strong, nonatomic, nullable) UIView *customView;/** * A label that holds an optional short message to be displayed below the activity indicator. The HUD is automatically resized to fit * the entire text. */@property (strong, nonatomic, readonly) UILabel *label;/** * A label that holds an optional details message displayed below the labelText message. The details text can span multiple lines. */@property (strong, nonatomic, readonly) UILabel *detailsLabel;/** * A button that is placed below the labels. Visible only if a target / action is added and a title is assigned.. */@property (strong, nonatomic, readonly) UIButton *button;@end@protocol TDSProgressHUDDelegate <NSObject>@optional/** * Called after the HUD was fully hidden from the screen. */- (void)hudWasHidden:(TDSProgressHUD *)hud;@end/** * A progress view for showing definite progress by filling up a circle (pie chart). */@interface XDGRoundProgressView : UIView/** * Progress (0.0 to 1.0) */@property (nonatomic, assign) float progress;/** * Indicator progress color. * Defaults to white [UIColor whiteColor]. */@property (nonatomic, strong) UIColor *progressTintColor;/** * Indicator background (non-progress) color. * Only applicable on iOS versions older than iOS 7. * Defaults to translucent white (alpha 0.1). */@property (nonatomic, strong) UIColor *backgroundTintColor;/* * Display mode - NO = round or YES = annular. Defaults to round. */@property (nonatomic, assign, getter = isAnnular) BOOL annular;@end/** * A flat bar progress view. */@interface XDGBarProgressView : UIView/** * Progress (0.0 to 1.0) */@property (nonatomic, assign) float progress;/** * Bar border line color. * Defaults to white [UIColor whiteColor]. */@property (nonatomic, strong) UIColor *lineColor;/** * Bar background color. * Defaults to clear [UIColor clearColor]; */@property (nonatomic, strong) UIColor *progressRemainingColor;/** * Bar progress color. * Defaults to white [UIColor whiteColor]. */@property (nonatomic, strong) UIColor *progressColor;@end@interface TDSBackgroundView : UIView/** * The background style. * Defaults to TDSProgressHUDBackgroundStyleBlur. */@property (nonatomic) TDSProgressHUDBackgroundStyle style;/** * The blur effect style, when using TDSProgressHUDBackgroundStyleBlur. * Defaults to UIBlurEffectStyleLight. */@property (nonatomic) UIBlurEffectStyle blurEffectStyle;/** * The background color or the blur tint color. * * Defaults to nil on iOS 13 and later and * `[UIColor colorWithWhite:0.8f alpha:0.6f]` * on older systems. */@property (nonatomic, strong, nullable) UIColor *color;@endNS_ASSUME_NONNULL_END
 |