[Demo] Sticker dust effect

This commit is contained in:
Ali
2023-11-11 23:03:53 +04:00
parent 770cadf544
commit 04705d4d09
3 changed files with 35 additions and 0 deletions

View File

@@ -2952,6 +2952,23 @@ public class ChatMessageAnimatedStickerItemNode: ChatMessageItemView {
override public func contentFrame() -> CGRect {
return self.imageNode.frame
}
override public func makeContentSnapshot() -> (UIImage, CGRect)? {
UIGraphicsBeginImageContextWithOptions(self.imageNode.view.bounds.size, false, 0.0)
let context = UIGraphicsGetCurrentContext()!
context.translateBy(x: -self.imageNode.frame.minX, y: -self.imageNode.frame.minY)
self.view.layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
guard let image else {
return nil
}
return (image, self.imageNode.frame)
}
}
public struct AnimatedEmojiSoundsConfiguration {

View File

@@ -2052,4 +2052,21 @@ public class ChatMessageStickerItemNode: ChatMessageItemView {
override public func contentFrame() -> CGRect {
return self.imageNode.frame
}
override public func makeContentSnapshot() -> (UIImage, CGRect)? {
UIGraphicsBeginImageContextWithOptions(self.imageNode.view.bounds.size, false, 0.0)
let context = UIGraphicsGetCurrentContext()!
context.translateBy(x: -self.imageNode.frame.minX, y: -self.imageNode.frame.minY)
self.view.layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
guard let image else {
return nil
}
return (image, self.imageNode.frame)
}
}

View File

@@ -166,6 +166,7 @@ public final class DustEffectLayer: MetalEngineSubjectLayer, MetalEngineSubject
if let item = Item(frame: frame, image: image) {
self.items.append(item)
self.updateNeedsAnimation()
self.setNeedsUpdate()
}
}