Comments (6)
A user of your lib may want to use a gif as a part of a more complex flow, knowing when the animation has ended is a really cool and powerful feature.
from gifu.
I did something like this:
class CustomGIFImageView : UIImageView, GIFAnimatable {
private let completionQueue = DispatchQueue(label: "com.myapp.gif-queue")
private var completionBlock = {}
func startAnimatingGIF(withCompletionHandler callback: @escaping () -> ()) {
startAnimatingGIF()
completionBlock = callback
completionQueue.async {
while(self.isAnimatingGIF) {}
DispatchQueue.main.async {
self.completionBlock()
}
}
}
/// A lazy animator.
public lazy var animator: Animator? = {
return Animator(withDelegate: self)
}()
/// Layer delegate method called periodically by the layer. **Should not** be called manually.
///
/// - parameter layer: The delegated layer.
override public func display(_ layer: CALayer) {
updateImageIfNeeded()
}
}
It works fine in my app
from gifu.
Worst solution @andreabar, while(self.isAnimatingGIF) {}
this line of code will use CPU at 100%.
from gifu.
@alexth Currently the animation loops automatically. I am not sure I understand how is that not what you are after.
from gifu.
@halonsoluis Fair enough. I do not have time to work on features that I don't need but PRs would be very welcome.
from gifu.
I'm not using this library anymore and I know that running a loop (even if it has an empty body) every tick it's very CPU consuming.
One solution could be put the thread to sleep for some milliseconds (since the code is running on a queue that is not the main thread that should not be an issue).
It would reduce the CPU usage. However this could led to some delay after the moment when the animation ends and the completionBlock call.
I didn't find any better solution other than that.
Oh well, actually I did found a much better solution: Do not use GIF at all. There are some other very elegant ways to put something animated in a iOS app.
from gifu.
Related Issues (20)
- GIFs without Duration-Info play too fast HOT 2
- iOS 14 GIFAnimatable UIKit extension doesn't play GIF HOT 24
- SwiftPM Package Resolution Failed for v3.3 HOT 7
- Gifu.h is unneeded
- Compatibility with objc
- Value of type 'GIFImageView' has no member 'animatedFrames'
- In the app, GIF quality degraded, but correct in the Google drive with same file(size) HOT 1
- Index out of range HOT 1
- Static GIF Image not show properly HOT 1
- Support other image formats HOT 1
- Gifu animate method not displaying gif HOT 1
- Spurious console logs related to zero-sized imaging HOT 1
- Version number is wrong in ppdspec file for 3.4 release HOT 2
- Not working HOT 1
- Not able to update to latest version 3.4.1
- How to get framework using Tuist?
- Improve how Gifu uses system resources HOT 2
- loopDuration is inaccessible in Animator object HOT 1
- Xcode does not support version format like `v3.4.1` HOT 1
- UIGraphicsBeginImageContextWithOptions crash when size is zero in iOS 17
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gifu.