Search code examples
iosobjective-csdwebimage

How to set progressive image in iOS using SDWebImage?


I tried to load an image progressively in my app. Basically what I tried is while the image is loading, I want to show the fully loaded image from blurred state. I tried,

SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:[NSURL URLWithString:@"https://profile.microsoft.com/RegsysProfileCenter/Images/personal_info.jpg"]
                      options:0
                     progress:^(NSInteger receivedSize, NSInteger expectedSize) {
                         [self.profileBtn setImage:[UIImage imageWithData:[NSData dataWithBytes:&receivedSize length:sizeof(receivedSize)] scale:15] forState:UIControlStateNormal];
                     }
                    completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
                        if (image) {
                            // [self.profileBtn setImage:image forState:UIControlStateNormal];
                        }
                    }];

Is it possible to load an image progressively using SDWebImage. Please help me with this.


Solution

  • You can try this implementation

    + (void)loadImageWithURLString:(NSString *)urlString forImageView:(UIImageView *)imageView {
        [imageView sd_setImageWithURL:[Utilities stringToURL:urlString]
                     placeholderImage:[UIImage placeHolderImage]
                              options:SDWebImageProgressiveDownload];
    }
    

    The option says that

    /**
         * This flag enables progressive download, the image is displayed progressively during download as a browser would do.
         * By default, the image is only displayed once completely downloaded.
         */
        SDWebImageProgressiveDownload = 1 << 3,