SDWebImage / SDWebImageSwiftUI

SwiftUI Image loading and Animation framework powered by SDWebImage
https://sdwebimage.github.io/SDWebImageSwiftUI
MIT License
2.14k stars 219 forks source link

SDImageResizingTransformer causes image to flicker when view updates #193

Open Stitch7 opened 3 years ago

Stitch7 commented 3 years ago

When using SDImageResizingTransformer in a view whose state constantly get updated, some slow loading images will flicker.

Example Video: https://streamable.com/cvyi05

Code to reproduce:

import SwiftUI
import SDWebImageSwiftUI

struct ContentView: View {

    @State var someState = 1

    let imageSize = UIScreen.main.bounds.size.width - 50
    let imageURL = URL(string: "https://www.trekcast.de/wp-content/uploads/2021/02/trekcast2014-1400.png")

    var imageResizingTransformer: SDImageResizingTransformer {
        let screenScale = UIScreen.main.scale
        let size = CGSize(width: imageSize * screenScale, height: imageSize * screenScale)
        return SDImageResizingTransformer(size: size, scaleMode: .aspectFill)
    }

    let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()

    var body: some View {
        VStack {
            WebImage(url: imageURL, context: [.imageTransformer: imageResizingTransformer])
                .resizable()
                .frame(width: imageSize, height: imageSize)
            Text("\(someState)")
        }
        .onReceive(timer) { _ in
            someState += 1
        }
    }
}

Occurred with Version SDWebImageSwiftUI 2.02 on Xcode 12.5.1 / iOS 14.5

lokizero00 commented 2 years ago

same issue