炼仙传说+春节皮肤
17
QXLive/Third/SVProgressHUD/SVIndefiniteAnimatedView.h
Executable file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// SVIndefiniteAnimatedView.h
|
||||
// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
|
||||
//
|
||||
// Copyright (c) 2014-2018 Guillaume Campagna. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface SVIndefiniteAnimatedView : UIView
|
||||
|
||||
@property (nonatomic, assign) CGFloat strokeThickness;
|
||||
@property (nonatomic, assign) CGFloat radius;
|
||||
@property (nonatomic, strong) UIColor *strokeColor;
|
||||
|
||||
@end
|
||||
|
||||
137
QXLive/Third/SVProgressHUD/SVIndefiniteAnimatedView.m
Executable file
@@ -0,0 +1,137 @@
|
||||
//
|
||||
// SVIndefiniteAnimatedView.m
|
||||
// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
|
||||
//
|
||||
// Copyright (c) 2014-2018 Guillaume Campagna. All rights reserved.
|
||||
//
|
||||
|
||||
#import "SVIndefiniteAnimatedView.h"
|
||||
#import "SVProgressHUD.h"
|
||||
|
||||
@interface SVIndefiniteAnimatedView ()
|
||||
|
||||
@property (nonatomic, strong) CAShapeLayer *indefiniteAnimatedLayer;
|
||||
|
||||
@end
|
||||
|
||||
@implementation SVIndefiniteAnimatedView
|
||||
|
||||
- (void)willMoveToSuperview:(UIView*)newSuperview {
|
||||
if (newSuperview) {
|
||||
[self layoutAnimatedLayer];
|
||||
} else {
|
||||
[_indefiniteAnimatedLayer removeFromSuperlayer];
|
||||
_indefiniteAnimatedLayer = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)layoutAnimatedLayer {
|
||||
CALayer *layer = self.indefiniteAnimatedLayer;
|
||||
[self.layer addSublayer:layer];
|
||||
|
||||
CGFloat widthDiff = CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds);
|
||||
CGFloat heightDiff = CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds);
|
||||
layer.position = CGPointMake(CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds) / 2 - widthDiff / 2, CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds) / 2 - heightDiff / 2);
|
||||
}
|
||||
|
||||
- (CAShapeLayer*)indefiniteAnimatedLayer {
|
||||
if(!_indefiniteAnimatedLayer) {
|
||||
CGPoint arcCenter = CGPointMake(self.radius+self.strokeThickness/2+5, self.radius+self.strokeThickness/2+5);
|
||||
UIBezierPath* smoothedPath = [UIBezierPath bezierPathWithArcCenter:arcCenter radius:self.radius startAngle:(CGFloat) (M_PI*3/2) endAngle:(CGFloat) (M_PI/2+M_PI*5) clockwise:YES];
|
||||
|
||||
_indefiniteAnimatedLayer = [CAShapeLayer layer];
|
||||
_indefiniteAnimatedLayer.contentsScale = [[UIScreen mainScreen] scale];
|
||||
_indefiniteAnimatedLayer.frame = CGRectMake(0.0f, 0.0f, arcCenter.x*2, arcCenter.y*2);
|
||||
_indefiniteAnimatedLayer.fillColor = [UIColor clearColor].CGColor;
|
||||
_indefiniteAnimatedLayer.strokeColor = self.strokeColor.CGColor;
|
||||
_indefiniteAnimatedLayer.lineWidth = self.strokeThickness;
|
||||
_indefiniteAnimatedLayer.lineCap = kCALineCapRound;
|
||||
_indefiniteAnimatedLayer.lineJoin = kCALineJoinBevel;
|
||||
_indefiniteAnimatedLayer.path = smoothedPath.CGPath;
|
||||
|
||||
CALayer *maskLayer = [CALayer layer];
|
||||
|
||||
NSBundle *bundle = [NSBundle bundleForClass:[SVProgressHUD class]];
|
||||
NSURL *url = [bundle URLForResource:@"SVProgressHUD" withExtension:@"bundle"];
|
||||
NSBundle *imageBundle = [NSBundle bundleWithURL:url];
|
||||
|
||||
NSString *path = [imageBundle pathForResource:@"angle-mask" ofType:@"png"];
|
||||
|
||||
maskLayer.contents = (__bridge id)[[UIImage imageWithContentsOfFile:path] CGImage];
|
||||
maskLayer.frame = _indefiniteAnimatedLayer.bounds;
|
||||
_indefiniteAnimatedLayer.mask = maskLayer;
|
||||
|
||||
NSTimeInterval animationDuration = 1;
|
||||
CAMediaTimingFunction *linearCurve = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
|
||||
|
||||
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
|
||||
animation.fromValue = (id) 0;
|
||||
animation.toValue = @(M_PI*2);
|
||||
animation.duration = animationDuration;
|
||||
animation.timingFunction = linearCurve;
|
||||
animation.removedOnCompletion = NO;
|
||||
animation.repeatCount = INFINITY;
|
||||
animation.fillMode = kCAFillModeForwards;
|
||||
animation.autoreverses = NO;
|
||||
[_indefiniteAnimatedLayer.mask addAnimation:animation forKey:@"rotate"];
|
||||
|
||||
CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
|
||||
animationGroup.duration = animationDuration;
|
||||
animationGroup.repeatCount = INFINITY;
|
||||
animationGroup.removedOnCompletion = NO;
|
||||
animationGroup.timingFunction = linearCurve;
|
||||
|
||||
CABasicAnimation *strokeStartAnimation = [CABasicAnimation animationWithKeyPath:@"strokeStart"];
|
||||
strokeStartAnimation.fromValue = @0.015;
|
||||
strokeStartAnimation.toValue = @0.515;
|
||||
|
||||
CABasicAnimation *strokeEndAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
|
||||
strokeEndAnimation.fromValue = @0.485;
|
||||
strokeEndAnimation.toValue = @0.985;
|
||||
|
||||
animationGroup.animations = @[strokeStartAnimation, strokeEndAnimation];
|
||||
[_indefiniteAnimatedLayer addAnimation:animationGroup forKey:@"progress"];
|
||||
|
||||
}
|
||||
return _indefiniteAnimatedLayer;
|
||||
}
|
||||
|
||||
- (void)setFrame:(CGRect)frame {
|
||||
if(!CGRectEqualToRect(frame, super.frame)) {
|
||||
[super setFrame:frame];
|
||||
|
||||
if(self.superview) {
|
||||
[self layoutAnimatedLayer];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (void)setRadius:(CGFloat)radius {
|
||||
if(radius != _radius) {
|
||||
_radius = radius;
|
||||
|
||||
[_indefiniteAnimatedLayer removeFromSuperlayer];
|
||||
_indefiniteAnimatedLayer = nil;
|
||||
|
||||
if(self.superview) {
|
||||
[self layoutAnimatedLayer];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setStrokeColor:(UIColor*)strokeColor {
|
||||
_strokeColor = strokeColor;
|
||||
_indefiniteAnimatedLayer.strokeColor = strokeColor.CGColor;
|
||||
}
|
||||
|
||||
- (void)setStrokeThickness:(CGFloat)strokeThickness {
|
||||
_strokeThickness = strokeThickness;
|
||||
_indefiniteAnimatedLayer.lineWidth = _strokeThickness;
|
||||
}
|
||||
|
||||
- (CGSize)sizeThatFits:(CGSize)size {
|
||||
return CGSizeMake((self.radius+self.strokeThickness/2+5)*2, (self.radius+self.strokeThickness/2+5)*2);
|
||||
}
|
||||
|
||||
@end
|
||||
17
QXLive/Third/SVProgressHUD/SVProgressAnimatedView.h
Executable file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// SVProgressAnimatedView.h
|
||||
// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
|
||||
//
|
||||
// Copyright (c) 2017-2018 Tobias Tiemerding. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface SVProgressAnimatedView : UIView
|
||||
|
||||
@property (nonatomic, assign) CGFloat radius;
|
||||
@property (nonatomic, assign) CGFloat strokeThickness;
|
||||
@property (nonatomic, strong) UIColor *strokeColor;
|
||||
@property (nonatomic, assign) CGFloat strokeEnd;
|
||||
|
||||
@end
|
||||
96
QXLive/Third/SVProgressHUD/SVProgressAnimatedView.m
Executable file
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// SVProgressAnimatedView.m
|
||||
// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
|
||||
//
|
||||
// Copyright (c) 2017-2018 Tobias Tiemerding. All rights reserved.
|
||||
//
|
||||
|
||||
#import "SVProgressAnimatedView.h"
|
||||
|
||||
@interface SVProgressAnimatedView ()
|
||||
|
||||
@property (nonatomic, strong) CAShapeLayer *ringAnimatedLayer;
|
||||
|
||||
@end
|
||||
|
||||
@implementation SVProgressAnimatedView
|
||||
|
||||
- (void)willMoveToSuperview:(UIView*)newSuperview {
|
||||
if (newSuperview) {
|
||||
[self layoutAnimatedLayer];
|
||||
} else {
|
||||
[_ringAnimatedLayer removeFromSuperlayer];
|
||||
_ringAnimatedLayer = nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)layoutAnimatedLayer {
|
||||
CALayer *layer = self.ringAnimatedLayer;
|
||||
[self.layer addSublayer:layer];
|
||||
|
||||
CGFloat widthDiff = CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds);
|
||||
CGFloat heightDiff = CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds);
|
||||
layer.position = CGPointMake(CGRectGetWidth(self.bounds) - CGRectGetWidth(layer.bounds) / 2 - widthDiff / 2, CGRectGetHeight(self.bounds) - CGRectGetHeight(layer.bounds) / 2 - heightDiff / 2);
|
||||
}
|
||||
|
||||
- (CAShapeLayer*)ringAnimatedLayer {
|
||||
if(!_ringAnimatedLayer) {
|
||||
CGPoint arcCenter = CGPointMake(self.radius+self.strokeThickness/2+5, self.radius+self.strokeThickness/2+5);
|
||||
UIBezierPath* smoothedPath = [UIBezierPath bezierPathWithArcCenter:arcCenter radius:self.radius startAngle:(CGFloat)-M_PI_2 endAngle:(CGFloat) (M_PI + M_PI_2) clockwise:YES];
|
||||
|
||||
_ringAnimatedLayer = [CAShapeLayer layer];
|
||||
_ringAnimatedLayer.contentsScale = [[UIScreen mainScreen] scale];
|
||||
_ringAnimatedLayer.frame = CGRectMake(0.0f, 0.0f, arcCenter.x*2, arcCenter.y*2);
|
||||
_ringAnimatedLayer.fillColor = [UIColor clearColor].CGColor;
|
||||
_ringAnimatedLayer.strokeColor = self.strokeColor.CGColor;
|
||||
_ringAnimatedLayer.lineWidth = self.strokeThickness;
|
||||
_ringAnimatedLayer.lineCap = kCALineCapRound;
|
||||
_ringAnimatedLayer.lineJoin = kCALineJoinBevel;
|
||||
_ringAnimatedLayer.path = smoothedPath.CGPath;
|
||||
}
|
||||
return _ringAnimatedLayer;
|
||||
}
|
||||
|
||||
- (void)setFrame:(CGRect)frame {
|
||||
if(!CGRectEqualToRect(frame, super.frame)) {
|
||||
[super setFrame:frame];
|
||||
|
||||
if(self.superview) {
|
||||
[self layoutAnimatedLayer];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setRadius:(CGFloat)radius {
|
||||
if(radius != _radius) {
|
||||
_radius = radius;
|
||||
|
||||
[_ringAnimatedLayer removeFromSuperlayer];
|
||||
_ringAnimatedLayer = nil;
|
||||
|
||||
if(self.superview) {
|
||||
[self layoutAnimatedLayer];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setStrokeColor:(UIColor*)strokeColor {
|
||||
_strokeColor = strokeColor;
|
||||
_ringAnimatedLayer.strokeColor = strokeColor.CGColor;
|
||||
}
|
||||
|
||||
- (void)setStrokeThickness:(CGFloat)strokeThickness {
|
||||
_strokeThickness = strokeThickness;
|
||||
_ringAnimatedLayer.lineWidth = _strokeThickness;
|
||||
}
|
||||
|
||||
- (void)setStrokeEnd:(CGFloat)strokeEnd {
|
||||
_strokeEnd = strokeEnd;
|
||||
_ringAnimatedLayer.strokeEnd = _strokeEnd;
|
||||
}
|
||||
|
||||
- (CGSize)sizeThatFits:(CGSize)size {
|
||||
return CGSizeMake((self.radius+self.strokeThickness/2+5)*2, (self.radius+self.strokeThickness/2+5)*2);
|
||||
}
|
||||
|
||||
@end
|
||||
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/angle-mask.png
Executable file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/angle-mask@2x.png
Executable file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/angle-mask@3x.png
Executable file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/error.png
Executable file
|
After Width: | Height: | Size: 184 B |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/error@2x.png
Executable file
|
After Width: | Height: | Size: 306 B |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/error@3x.png
Executable file
|
After Width: | Height: | Size: 398 B |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/info.png
Executable file
|
After Width: | Height: | Size: 365 B |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/info@2x.png
Executable file
|
After Width: | Height: | Size: 816 B |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/info@3x.png
Executable file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/success.png
Executable file
|
After Width: | Height: | Size: 262 B |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/success@2x.png
Executable file
|
After Width: | Height: | Size: 462 B |
BIN
QXLive/Third/SVProgressHUD/SVProgressHUD.bundle/success@3x.png
Executable file
|
After Width: | Height: | Size: 714 B |
147
QXLive/Third/SVProgressHUD/SVProgressHUD.h
Executable file
@@ -0,0 +1,147 @@
|
||||
//
|
||||
// SVProgressHUD.h
|
||||
// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
|
||||
//
|
||||
// Copyright (c) 2011-2018 Sam Vermette and contributors. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AvailabilityMacros.h>
|
||||
|
||||
extern NSString * _Nonnull const SVProgressHUDDidReceiveTouchEventNotification;
|
||||
extern NSString * _Nonnull const SVProgressHUDDidTouchDownInsideNotification;
|
||||
extern NSString * _Nonnull const SVProgressHUDWillDisappearNotification;
|
||||
extern NSString * _Nonnull const SVProgressHUDDidDisappearNotification;
|
||||
extern NSString * _Nonnull const SVProgressHUDWillAppearNotification;
|
||||
extern NSString * _Nonnull const SVProgressHUDDidAppearNotification;
|
||||
|
||||
extern NSString * _Nonnull const SVProgressHUDStatusUserInfoKey;
|
||||
|
||||
typedef NS_ENUM(NSInteger, SVProgressHUDStyle) {
|
||||
SVProgressHUDStyleLight, // default style, white HUD with black text, HUD background will be blurred
|
||||
SVProgressHUDStyleDark, // black HUD and white text, HUD background will be blurred
|
||||
SVProgressHUDStyleCustom // uses the fore- and background color properties
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, SVProgressHUDMaskType) {
|
||||
SVProgressHUDMaskTypeNone = 1, // default mask type, allow user interactions while HUD is displayed
|
||||
SVProgressHUDMaskTypeClear, // don't allow user interactions with background objects
|
||||
SVProgressHUDMaskTypeBlack, // don't allow user interactions with background objects and dim the UI in the back of the HUD (as seen in iOS 7 and above)
|
||||
SVProgressHUDMaskTypeGradient, // don't allow user interactions with background objects and dim the UI with a a-la UIAlertView background gradient (as seen in iOS 6)
|
||||
SVProgressHUDMaskTypeCustom // don't allow user interactions with background objects and dim the UI in the back of the HUD with a custom color
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, SVProgressHUDAnimationType) {
|
||||
SVProgressHUDAnimationTypeFlat, // default animation type, custom flat animation (indefinite animated ring)
|
||||
SVProgressHUDAnimationTypeNative // iOS native UIActivityIndicatorView
|
||||
};
|
||||
|
||||
typedef void (^SVProgressHUDShowCompletion)(void);
|
||||
typedef void (^SVProgressHUDDismissCompletion)(void);
|
||||
|
||||
@interface SVProgressHUD : UIView
|
||||
|
||||
#pragma mark - Customization
|
||||
|
||||
@property (assign, nonatomic) SVProgressHUDStyle defaultStyle UI_APPEARANCE_SELECTOR; // default is SVProgressHUDStyleLight
|
||||
@property (assign, nonatomic) SVProgressHUDMaskType defaultMaskType UI_APPEARANCE_SELECTOR; // default is SVProgressHUDMaskTypeNone
|
||||
@property (assign, nonatomic) SVProgressHUDAnimationType defaultAnimationType UI_APPEARANCE_SELECTOR; // default is SVProgressHUDAnimationTypeFlat
|
||||
@property (strong, nonatomic, nullable) UIView *containerView; // if nil then use default window level
|
||||
@property (assign, nonatomic) CGSize minimumSize UI_APPEARANCE_SELECTOR; // default is CGSizeZero, can be used to avoid resizing for a larger message
|
||||
@property (assign, nonatomic) CGFloat ringThickness UI_APPEARANCE_SELECTOR; // default is 2 pt
|
||||
@property (assign, nonatomic) CGFloat ringRadius UI_APPEARANCE_SELECTOR; // default is 18 pt
|
||||
@property (assign, nonatomic) CGFloat ringNoTextRadius UI_APPEARANCE_SELECTOR; // default is 24 pt
|
||||
@property (assign, nonatomic) CGFloat cornerRadius UI_APPEARANCE_SELECTOR; // default is 14 pt
|
||||
@property (strong, nonatomic, nonnull) UIFont *font UI_APPEARANCE_SELECTOR; // default is [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]
|
||||
@property (strong, nonatomic, nonnull) UIColor *backgroundColor UI_APPEARANCE_SELECTOR; // default is [UIColor whiteColor]
|
||||
@property (strong, nonatomic, nonnull) UIColor *foregroundColor UI_APPEARANCE_SELECTOR; // default is [UIColor blackColor]
|
||||
@property (strong, nonatomic, nonnull) UIColor *backgroundLayerColor UI_APPEARANCE_SELECTOR;// default is [UIColor colorWithWhite:0 alpha:0.4]
|
||||
@property (assign, nonatomic) CGSize imageViewSize UI_APPEARANCE_SELECTOR; // default is 28x28 pt
|
||||
@property (assign, nonatomic) BOOL shouldTintImages UI_APPEARANCE_SELECTOR; // default is YES
|
||||
@property (strong, nonatomic, nonnull) UIImage *infoImage UI_APPEARANCE_SELECTOR; // default is the bundled info image provided by Freepik
|
||||
@property (strong, nonatomic, nonnull) UIImage *successImage UI_APPEARANCE_SELECTOR; // default is the bundled success image provided by Freepik
|
||||
@property (strong, nonatomic, nonnull) UIImage *errorImage UI_APPEARANCE_SELECTOR; // default is the bundled error image provided by Freepik
|
||||
@property (strong, nonatomic, nonnull) UIView *viewForExtension UI_APPEARANCE_SELECTOR; // default is nil, only used if #define SV_APP_EXTENSIONS is set
|
||||
@property (assign, nonatomic) NSTimeInterval graceTimeInterval; // default is 0 seconds
|
||||
@property (assign, nonatomic) NSTimeInterval minimumDismissTimeInterval; // default is 5.0 seconds
|
||||
@property (assign, nonatomic) NSTimeInterval maximumDismissTimeInterval; // default is CGFLOAT_MAX
|
||||
|
||||
@property (assign, nonatomic) UIOffset offsetFromCenter UI_APPEARANCE_SELECTOR; // default is 0, 0
|
||||
|
||||
@property (assign, nonatomic) NSTimeInterval fadeInAnimationDuration UI_APPEARANCE_SELECTOR; // default is 0.15
|
||||
@property (assign, nonatomic) NSTimeInterval fadeOutAnimationDuration UI_APPEARANCE_SELECTOR; // default is 0.15
|
||||
|
||||
@property (assign, nonatomic) UIWindowLevel maxSupportedWindowLevel; // default is UIWindowLevelNormal
|
||||
|
||||
@property (assign, nonatomic) BOOL hapticsEnabled; // default is NO
|
||||
|
||||
+ (void)setDefaultStyle:(SVProgressHUDStyle)style; // default is SVProgressHUDStyleLight
|
||||
+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType; // default is SVProgressHUDMaskTypeNone
|
||||
+ (void)setDefaultAnimationType:(SVProgressHUDAnimationType)type; // default is SVProgressHUDAnimationTypeFlat
|
||||
+ (void)setContainerView:(nullable UIView*)containerView; // default is window level
|
||||
+ (void)setMinimumSize:(CGSize)minimumSize; // default is CGSizeZero, can be used to avoid resizing for a larger message
|
||||
+ (void)setRingThickness:(CGFloat)ringThickness; // default is 2 pt
|
||||
+ (void)setRingRadius:(CGFloat)radius; // default is 18 pt
|
||||
+ (void)setRingNoTextRadius:(CGFloat)radius; // default is 24 pt
|
||||
+ (void)setCornerRadius:(CGFloat)cornerRadius; // default is 14 pt
|
||||
+ (void)setBorderColor:(nonnull UIColor*)color; // default is nil
|
||||
+ (void)setBorderWidth:(CGFloat)width; // default is 0
|
||||
+ (void)setFont:(nonnull UIFont*)font; // default is [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]
|
||||
+ (void)setForegroundColor:(nonnull UIColor*)color; // default is [UIColor blackColor], only used for SVProgressHUDStyleCustom
|
||||
+ (void)setBackgroundColor:(nonnull UIColor*)color; // default is [UIColor whiteColor], only used for SVProgressHUDStyleCustom
|
||||
+ (void)setBackgroundLayerColor:(nonnull UIColor*)color; // default is [UIColor colorWithWhite:0 alpha:0.5], only used for SVProgressHUDMaskTypeCustom
|
||||
+ (void)setImageViewSize:(CGSize)size; // default is 28x28 pt
|
||||
+ (void)setShouldTintImages:(BOOL)shouldTintImages; // default is YES
|
||||
+ (void)setInfoImage:(nonnull UIImage*)image; // default is the bundled info image provided by Freepik
|
||||
+ (void)setSuccessImage:(nonnull UIImage*)image; // default is the bundled success image provided by Freepik
|
||||
+ (void)setErrorImage:(nonnull UIImage*)image; // default is the bundled error image provided by Freepik
|
||||
+ (void)setViewForExtension:(nonnull UIView*)view; // default is nil, only used if #define SV_APP_EXTENSIONS is set
|
||||
+ (void)setGraceTimeInterval:(NSTimeInterval)interval; // default is 0 seconds
|
||||
+ (void)setMinimumDismissTimeInterval:(NSTimeInterval)interval; // default is 5.0 seconds
|
||||
+ (void)setMaximumDismissTimeInterval:(NSTimeInterval)interval; // default is infinite
|
||||
+ (void)setFadeInAnimationDuration:(NSTimeInterval)duration; // default is 0.15 seconds
|
||||
+ (void)setFadeOutAnimationDuration:(NSTimeInterval)duration; // default is 0.15 seconds
|
||||
+ (void)setMaxSupportedWindowLevel:(UIWindowLevel)windowLevel; // default is UIWindowLevelNormal
|
||||
+ (void)setHapticsEnabled:(BOOL)hapticsEnabled; // default is NO
|
||||
|
||||
#pragma mark - Show Methods
|
||||
|
||||
+ (void)show;
|
||||
+ (void)showWithMaskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use show and setDefaultMaskType: instead.")));
|
||||
+ (void)showWithStatus:(nullable NSString*)status;
|
||||
+ (void)showWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use showWithStatus: and setDefaultMaskType: instead.")));
|
||||
|
||||
+ (void)showProgress:(float)progress;
|
||||
+ (void)showProgress:(float)progress maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use showProgress: and setDefaultMaskType: instead.")));
|
||||
+ (void)showProgress:(float)progress status:(nullable NSString*)status;
|
||||
+ (void)showProgress:(float)progress status:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use showProgress:status: and setDefaultMaskType: instead.")));
|
||||
|
||||
+ (void)setStatus:(nullable NSString*)status; // change the HUD loading status while it's showing
|
||||
|
||||
// stops the activity indicator, shows a glyph + status, and dismisses the HUD a little bit later
|
||||
+ (void)showInfoWithStatus:(nullable NSString*)status;
|
||||
+ (void)showInfoWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use showInfoWithStatus: and setDefaultMaskType: instead.")));
|
||||
+ (void)showSuccessWithStatus:(nullable NSString*)status;
|
||||
+ (void)showSuccessWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use showSuccessWithStatus: and setDefaultMaskType: instead.")));
|
||||
+ (void)showErrorWithStatus:(nullable NSString*)status;
|
||||
+ (void)showErrorWithStatus:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use showErrorWithStatus: and setDefaultMaskType: instead.")));
|
||||
|
||||
// shows a image + status, use white PNGs with the imageViewSize (default is 28x28 pt)
|
||||
+ (void)showImage:(nonnull UIImage*)image status:(nullable NSString*)status;
|
||||
+ (void)showImage:(nonnull UIImage*)image status:(nullable NSString*)status maskType:(SVProgressHUDMaskType)maskType __attribute__((deprecated("Use showImage:status: and setDefaultMaskType: instead.")));
|
||||
|
||||
+ (void)setOffsetFromCenter:(UIOffset)offset;
|
||||
+ (void)resetOffsetFromCenter;
|
||||
|
||||
+ (void)popActivity; // decrease activity count, if activity count == 0 the HUD is dismissed
|
||||
+ (void)dismiss;
|
||||
+ (void)dismissWithCompletion:(nullable SVProgressHUDDismissCompletion)completion;
|
||||
+ (void)dismissWithDelay:(NSTimeInterval)delay;
|
||||
+ (void)dismissWithDelay:(NSTimeInterval)delay completion:(nullable SVProgressHUDDismissCompletion)completion;
|
||||
|
||||
+ (BOOL)isVisible;
|
||||
|
||||
+ (NSTimeInterval)displayDurationForString:(nullable NSString*)string;
|
||||
|
||||
@end
|
||||
|
||||
1509
QXLive/Third/SVProgressHUD/SVProgressHUD.m
Executable file
14
QXLive/Third/SVProgressHUD/SVRadialGradientLayer.h
Executable file
@@ -0,0 +1,14 @@
|
||||
//
|
||||
// SVRadialGradientLayer.h
|
||||
// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
|
||||
//
|
||||
// Copyright (c) 2014-2018 Tobias Tiemerding. All rights reserved.
|
||||
//
|
||||
|
||||
#import <QuartzCore/QuartzCore.h>
|
||||
|
||||
@interface SVRadialGradientLayer : CALayer
|
||||
|
||||
@property (nonatomic) CGPoint gradientCenter;
|
||||
|
||||
@end
|
||||
25
QXLive/Third/SVProgressHUD/SVRadialGradientLayer.m
Executable file
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// SVRadialGradientLayer.m
|
||||
// SVProgressHUD, https://github.com/SVProgressHUD/SVProgressHUD
|
||||
//
|
||||
// Copyright (c) 2014-2018 Tobias Tiemerding. All rights reserved.
|
||||
//
|
||||
|
||||
#import "SVRadialGradientLayer.h"
|
||||
|
||||
@implementation SVRadialGradientLayer
|
||||
|
||||
- (void)drawInContext:(CGContextRef)context {
|
||||
size_t locationsCount = 2;
|
||||
CGFloat locations[2] = {0.0f, 1.0f};
|
||||
CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f};
|
||||
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
|
||||
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount);
|
||||
CGColorSpaceRelease(colorSpace);
|
||||
|
||||
float radius = MIN(self.bounds.size.width , self.bounds.size.height);
|
||||
CGContextDrawRadialGradient (context, gradient, self.gradientCenter, 0, self.gradientCenter, radius, kCGGradientDrawsAfterEndLocation);
|
||||
CGGradientRelease(gradient);
|
||||
}
|
||||
|
||||
@end
|
||||