Comments (8)
There should be no concern for it. Kingfisher will remember the last set image url and ignore previous image loading, even if it is not yet finished.
from kingfisher.
Your code seems good to me except reseting the image once again when downloading successfully. The kf_setImageWithURL
will set the image for you when everything goes OK.
May I know some more detail and context on how do you configure your cell? And you could check and the demo project in the repo as well, in which a collection view is used to show some images.
from kingfisher.
Thanks, you gave me a hint. The issue was the resetting. I guess my function did not maintain the imageView's references since it is a reused cell from collection view.
Here is a revised code:
imageView.kf_setImageWithURL(thumbnailUrl,
placeholderImage: UIImage(named: "loading_image"),
optionsInfo: nil,
completionHandler: { [weak imageView] (image, error, cacheType, imageURL) -> () in
if error != nil {
imageView?.image = UIImage(named: "no_image")
}
})
from kingfisher.
:)
from kingfisher.
@onevcat
imageView.kf_setImageWithURL(thumbnailUrl,
placeholderImage: UIImage(named: "loading_image"),
optionsInfo: nil,
completionHandler: { [weak imageView] (image, error, cacheType, imageURL) -> () in
if error != nil {
imageView?.image = UIImage(named: "no_image")
}
// for fast scrolling when the cell is reused and you might have 2 request for same cell on queue .should we also check if previous url is same as current one. To avoid showing wrong image on the cell till the correct one invokes and reloads the cell or is this handled. In the demo this is not handled.
Note I am using prepareForReuse() to set imageview.image = nil // does this take care of it.
Just curious before I put KF code in all over my project.
something like
if thumbnailUrl != imageURL{ // a completion for previous cell
imageView?.image = nil
}
})
from kingfisher.
Here what is the name of the image "no_image" means which is downloaded from the server image or your placeholder image.
?????
from kingfisher.
And also i am getting error "Value of type 'UIImage?' has no member 'kf_setImageWithURL'" what the extension for the method.?
Please help me.
from kingfisher.
@HariNarayanan777 UIImage(named: "no_image")
is local image. When an error occurs fetching the image from the url, I will replace the placeholder image ("loading_image") to "no_image" image.
And kf_setImageWithURL
is an old API and also Kingfisher's API is on UIImageView
. Not on UIImage
.
I think you can try
imageView.kf.setImage(
with: imageUrl,
placeholder: UIImage(named:"some_placeholder_image"),
options: nil,
progressBlock: nil,
completionHandler: { (image: Image?, error: NSError?, cache: CacheType, url: URL?) in
})
from kingfisher.
Related Issues (20)
- App crashed for GIF images
- 清除图片的缓存 HOT 3
- Resizing an UIImageView via UIViewPropertyAnimator makes loaded image disappear and placeholder appear HOT 3
- `defaultOptions` only invokes _last_ `requestModifier` in chain HOT 2
- How to refresh cache same url while in use props: .resizing() and downsampling() on SwiftUI HOT 2
- 部分jpg图片链接无法显示的问题,kf.setImage(with: URL(string: url), placeholder: placeholder) HOT 5
- ImageProgressive.swift:121 Crash HOT 2
- Diskstorage.swift:224 (fileManager.fileExists(atPath: filePath) 文件IO耗时导致卡顿 HOT 2
- Memory Leak HOT 3
- Privacy Report HOT 4
- 约定的图片地址实际资源为视频时,在列表中加载这种资源,内存激增导致 App 闪退。 HOT 2
- Fade transition still occurs when cache is used with downsampling enabled
- Upload Privacy Policy HOT 2
- KingfisherManager.shared warning on Xcode 15.3 with Strict Concurrency Checking set to complete HOT 4
- Crash at ImageContext.swift line 84. EXC_BAD_ACCESS (SIGSEGV) HOT 1
- Race Condition in ImageDownloader.addDownloadTask
- Some Crashs On iPad5.3
- CPListItem' is only available in iOS 12.0 or newer HOT 1
- 同一个cacheKey有不用的downloadURL,主要是加入size控制,如何实现同一cacheKey只缓存size更大的图片数据呢
- [Question] Show a stub ONLY after attempt to load image by URL. HOT 1
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 kingfisher.