mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
60 lines
1.8 KiB
Objective-C
60 lines
1.8 KiB
Objective-C
#import "TGLocationPulseView.h"
|
|
|
|
#import "LegacyComponentsInternal.h"
|
|
|
|
@interface TGLocationPulseView ()
|
|
{
|
|
CAShapeLayer *_circleLayer;
|
|
}
|
|
@end
|
|
|
|
@implementation TGLocationPulseView
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
{
|
|
self = [super initWithFrame:frame];
|
|
if (self != nil)
|
|
{
|
|
self.userInteractionEnabled = false;
|
|
|
|
_circleLayer = [CAShapeLayer layer];
|
|
_circleLayer.hidden = true;
|
|
_circleLayer.opacity = 0.0f;
|
|
_circleLayer.path = CGPathCreateWithEllipseInRect(CGRectMake(-60.0f, -60.0f, 120.0f, 120.0f), NULL);
|
|
_circleLayer.fillColor = UIColorRGBA(0x007aff, 0.27f).CGColor;
|
|
[self.layer addSublayer:_circleLayer];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)start
|
|
{
|
|
_circleLayer.hidden = false;
|
|
|
|
if (_circleLayer.animationKeys.count > 0)
|
|
return;
|
|
|
|
CAKeyframeAnimation *scaleAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
|
|
scaleAnimation.values = @[@0.0f, @0.72f, @1.0f, @1.0f];
|
|
scaleAnimation.keyTimes = @[@0.0, @0.49f, @0.88f, @1.0f];
|
|
scaleAnimation.duration = 3.0;
|
|
scaleAnimation.repeatCount = INFINITY;
|
|
scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
|
|
[_circleLayer addAnimation:scaleAnimation forKey:@"circle-scale"];
|
|
|
|
CAKeyframeAnimation *opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
|
|
opacityAnimation.values = @[@1.0f, @0.2f, @0.0, @0.0f];
|
|
opacityAnimation.keyTimes = @[@0.0, @0.4f, @0.62f, @1.0f];
|
|
opacityAnimation.duration = 3.0;
|
|
opacityAnimation.repeatCount = INFINITY;
|
|
[_circleLayer addAnimation:opacityAnimation forKey:@"circle-opacity"];
|
|
}
|
|
|
|
- (void)stop
|
|
{
|
|
_circleLayer.hidden = true;
|
|
[_circleLayer removeAllAnimations];
|
|
}
|
|
|
|
@end
|