mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Add star background effect
This commit is contained in:
parent
03eeb3515c
commit
17408cbb9a
@ -56,11 +56,13 @@ protocol ReactionItemNode: ASDisplayNode {
|
||||
private let lockedBackgroundImage: UIImage = generateFilledCircleImage(diameter: 16.0, color: .white)!.withRenderingMode(.alwaysTemplate)
|
||||
private let lockedBadgeIcon: UIImage? = generateTintedImage(image: UIImage(bundleImageName: "Chat/Input/Media/PanelBadgeLock"), color: .white)
|
||||
|
||||
private final class StarsReactionEffectLayer: SimpleLayer {
|
||||
private final class StarsButtonEffectLayer: SimpleLayer {
|
||||
let emitterLayer = CAEmitterLayer()
|
||||
|
||||
override init() {
|
||||
super.init()
|
||||
|
||||
//self.backgroundColor = UIColor.lightGray.withAlphaComponent(0.2).cgColor
|
||||
self.addSublayer(self.emitterLayer)
|
||||
}
|
||||
|
||||
override init(layer: Any) {
|
||||
@ -71,7 +73,45 @@ private final class StarsReactionEffectLayer: SimpleLayer {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
private func setup() {
|
||||
let color = UIColor(rgb: 0xffbe27)
|
||||
|
||||
let emitter = CAEmitterCell()
|
||||
emitter.name = "emitter"
|
||||
emitter.contents = UIImage(bundleImageName: "Premium/Stars/Particle")?.cgImage
|
||||
emitter.birthRate = 25.0
|
||||
emitter.lifetime = 2.0
|
||||
emitter.velocity = 12.0
|
||||
emitter.velocityRange = 3
|
||||
emitter.scale = 0.1
|
||||
emitter.scaleRange = 0.08
|
||||
emitter.alphaRange = 0.1
|
||||
emitter.emissionRange = .pi * 2.0
|
||||
emitter.setValue(3.0, forKey: "mass")
|
||||
emitter.setValue(2.0, forKey: "massRange")
|
||||
|
||||
let staticColors: [Any] = [
|
||||
color.withAlphaComponent(0.0).cgColor,
|
||||
color.cgColor,
|
||||
color.cgColor,
|
||||
color.withAlphaComponent(0.0).cgColor
|
||||
]
|
||||
let staticColorBehavior = CAEmitterCell.createEmitterBehavior(type: "colorOverLife")
|
||||
staticColorBehavior.setValue(staticColors, forKey: "colors")
|
||||
emitter.setValue([staticColorBehavior], forKey: "emitterBehaviors")
|
||||
|
||||
self.emitterLayer.emitterCells = [emitter]
|
||||
}
|
||||
|
||||
func update(size: CGSize) {
|
||||
if self.emitterLayer.emitterCells == nil {
|
||||
self.setup()
|
||||
}
|
||||
self.emitterLayer.emitterShape = .circle
|
||||
self.emitterLayer.emitterSize = CGSize(width: size.width * 0.7, height: size.height * 0.7)
|
||||
self.emitterLayer.emitterMode = .surface
|
||||
self.emitterLayer.frame = CGRect(origin: .zero, size: size)
|
||||
self.emitterLayer.emitterPosition = CGPoint(x: size.width / 2.0, y: size.height / 2.0)
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,7 +128,7 @@ public final class ReactionNode: ASDisplayNode, ReactionItemNode {
|
||||
let selectionTintView: UIView?
|
||||
let selectionView: UIView?
|
||||
|
||||
private var starsEffectLayer: StarsReactionEffectLayer?
|
||||
private var starsEffectLayer: StarsButtonEffectLayer?
|
||||
|
||||
private var animateInAnimationNode: AnimatedStickerNode?
|
||||
private var staticAnimationPlaceholderView: UIImageView?
|
||||
@ -151,7 +191,7 @@ public final class ReactionNode: ASDisplayNode, ReactionItemNode {
|
||||
super.init()
|
||||
|
||||
if case .stars = item.reaction.rawValue {
|
||||
let starsEffectLayer = StarsReactionEffectLayer()
|
||||
let starsEffectLayer = StarsButtonEffectLayer()
|
||||
self.starsEffectLayer = starsEffectLayer
|
||||
self.layer.addSublayer(starsEffectLayer)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user