mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Various fixes
This commit is contained in:
@@ -122,8 +122,33 @@ class LocationPinAnnotationLayer: CALayer {
|
||||
}
|
||||
}
|
||||
|
||||
private func addPulseAnimations(layer: CALayer) {
|
||||
let scaleAnimation = CAKeyframeAnimation(keyPath: "transform.scale")
|
||||
scaleAnimation.values = [0.0 as NSNumber, 0.72 as NSNumber, 1.0 as NSNumber, 1.0 as NSNumber]
|
||||
scaleAnimation.keyTimes = [0.0 as NSNumber, 0.49 as NSNumber, 0.88 as NSNumber, 1.0 as NSNumber]
|
||||
scaleAnimation.duration = 3.0
|
||||
scaleAnimation.repeatCount = Float.infinity
|
||||
scaleAnimation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut)
|
||||
scaleAnimation.beginTime = 1.0
|
||||
layer.add(scaleAnimation, forKey: "pulse-scale")
|
||||
|
||||
let opacityAnimation = CAKeyframeAnimation(keyPath: "opacity")
|
||||
opacityAnimation.values = [1.0 as NSNumber, 0.2 as NSNumber, 0.0 as NSNumber, 0.0 as NSNumber]
|
||||
opacityAnimation.keyTimes = [0.0 as NSNumber, 0.4 as NSNumber, 0.62 as NSNumber, 1.0 as NSNumber]
|
||||
opacityAnimation.duration = 3.0
|
||||
opacityAnimation.repeatCount = Float.infinity
|
||||
opacityAnimation.beginTime = 1.0
|
||||
layer.add(opacityAnimation, forKey: "pulse-opacity")
|
||||
}
|
||||
|
||||
private func removePulseAnimations(layer: CALayer) {
|
||||
layer.removeAnimation(forKey: "pulse-scale")
|
||||
layer.removeAnimation(forKey: "pulse-opacity")
|
||||
}
|
||||
|
||||
class LocationPinAnnotationView: MKAnnotationView {
|
||||
let shadowNode: ASImageNode
|
||||
let pulseNode: ASImageNode
|
||||
let backgroundNode: ASImageNode
|
||||
let arrowNode: ASImageNode
|
||||
let smallNode: ASImageNode
|
||||
@@ -138,6 +163,8 @@ class LocationPinAnnotationView: MKAnnotationView {
|
||||
var appeared = false
|
||||
var animating = false
|
||||
|
||||
var hasPulse = false
|
||||
|
||||
override class var layerClass: AnyClass {
|
||||
return LocationPinAnnotationLayer.self
|
||||
}
|
||||
@@ -155,6 +182,11 @@ class LocationPinAnnotationView: MKAnnotationView {
|
||||
self.shadowNode.bounds = CGRect(origin: CGPoint(), size: image.size)
|
||||
}
|
||||
|
||||
self.pulseNode = ASImageNode()
|
||||
self.pulseNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 120.0, height: 120.0))
|
||||
self.pulseNode.image = generateFilledCircleImage(diameter: 120.0, color: UIColor(rgb: 0x007aff, alpha: 0.27))
|
||||
self.pulseNode.isHidden = true
|
||||
|
||||
self.arrowNode = ASImageNode()
|
||||
self.arrowNode.frame = CGRect(origin: CGPoint(), size: CGSize(width: 88.0, height: 88.0))
|
||||
self.arrowNode.image = generateHeadingArrowImage()
|
||||
@@ -612,6 +644,8 @@ class LocationPinAnnotationView: MKAnnotationView {
|
||||
}
|
||||
|
||||
self.dotNode.position = CGPoint()
|
||||
self.pulseNode.position = CGPoint()
|
||||
self.arrowNode.position = CGPoint()
|
||||
self.smallNode.position = CGPoint()
|
||||
self.shadowNode.position = CGPoint(x: UIScreenPixel, y: self.isRaised ? -66.0 : -36.0)
|
||||
self.backgroundNode.position = CGPoint(x: self.shadowNode.frame.width / 2.0, y: self.shadowNode.frame.height / 2.0)
|
||||
|
||||
Reference in New Issue
Block a user