炼仙传说+春节皮肤
This commit is contained in:
96
QXLive/Third/SVProgressHUD/SVProgressAnimatedView.m
Executable file
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
|
||||
Reference in New Issue
Block a user