Tag: sdwebimage

在重用UITableViewCell的同时使用SDWebImage处理图像的下载

我已经使用第三方库SDWebImage为我的UITableView单元格下载图像,在单元格内创buildUIImageView并触发请求,同时configuration像这样的单元格。 [imageView setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"default.jpg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { }]; 它的工作正常,但是当我滚动快,大部分图像没有完全下载(我可以看到,在查尔斯),因为该图像没有caching。 即使我的单元被重用,我如何caching已经发送的请求,以便相同的请求不会多次。 请忽略任何错字:)

iOS SDWebImage淡入新图像

我一直在我的iPhone应用程序上使用SDWebImage来处理所有的图像加载。 我正在使用一个占位符图像,并且在加载后我想淡入或淡入新图像。 我正在使用成功块来设置图像,它工作的很好。 不pipe我尝试什么,图像都不会褪色。 我已经尝试将animation代码发送回主线程,但是这也没有帮助。 它只是立即加载…没有animation。 这是我的代码。 有什么想法吗? // load placeholder image NSURL *url = … _imageView = [[UIImageView alloc] init]; [_imageView setImage:[UIImage imageNamed:@"loading.jpg"]]; // request image SDWebImageManager *manager = [SDWebImageManager sharedManager]; [manager downloadWithURL:url delegate:self options:0 success:^(UIImage *image) { [UIView transitionWithView:_imageView duration:3.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ [_imageView setImage:image]; } completion:NULL]; } failure:nil];

SDWebImage在单元格中重复图像,而不是等待加载。

我正在使用SDWebImage从服务器提取图像到IOS中的我的表视图应用程序。 但问题是,当我在表视图中向下滚动,而不是等待图像加载时,把下载的图像放在表视图的前几行,并重复这些图像,直到结束行,当它下载图像时,它会改变这些重复的图像到该行的实际图像。 NSURL * url = [NSURL URLWithString:string]; SDWebImageManager *manager = [SDWebImageManager sharedManager]; [manager downloadImageWithURL:url options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) { // progression tracking code } completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished,NSURL * url) { if (finished && image ) { NSArray *visibleIndexPaths = [tableView indexPathsForVisibleRows]; if ([visibleIndexPaths containsObject:indexPath]) { cell.myImage.image = image; […]

Swift 3对'sd_setImage(with:placeholderImage:completed :)'的模糊使用

我在我的SDWebImage上使用SDWebImage进行了以下调用,这对于Swift 2工作正常,但是在使用Swift 3进行XCode 8 beta 5编译时出现错误: imageView.sd_setImage(with:url, placeholderImage:placeholder, completed: { (image: UIImage?, error: Error?, cacheType: SDImageCacheType, imageURL: URL?) in … }); 错误是: 模糊使用'sd_setImage(with:placeholderImage:completed :)' 我怀疑我在完成的处理程序的签名中出现了错误,但我无法弄清楚语法应该是什么。 我错过了什么?

在SDWebImage代码中解释__weak和__strong的使用原因

我认为我很了解强和弱的关键字,但我不明白它是如何在下面的代码中使用的。 这个代码是由github上的Olivier Poitrey提供的SDWebImage。 我了解强和弱的关键字,如下所述: iOS5强和弱存储的解释 下面的代码以对我感兴趣的方式使用__weak和__strong关键字。 这是不是一个孩子父母关系或委托模式,因为我习惯于看到弱用。 但是,我确定这是一个经常使用的模式,正如我之前在其他代码中看到的那样。 它在另一个线程上运行的块之前设置__weak引用。 然后,在该块内,它将弱参考设置为强参考。 我敢肯定,这是优雅的代码,所以我试图理解它。 如果在块运行之前“自我”不再存在,则弱自引用将被清零。 块运行时,强参考也将被设置为零。 因此,由于自己不再存在,所以会知道杀死其余的操作。 我有这个对吗? 现在,如果我们不使用__weak和__strong关键字会发生什么? 如果我们只是检查块内部是否self == nil。 自从块复制整棵树以后,“自我”会不会成为零? 有人可以帮助神秘的这段代码很神秘吗? 有人可以证实或否定我的假设吗? – (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletedBlock)completedBlock; { [self cancelCurrentImageLoad]; self.image = placeholder; if (url) { __weak UIImageView *wself = self; id<SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, […]

未findSDWebImage / UIImageView + WebCache.h文件

我正在尝试在我的iPhone应用程序中使用SDWebImage。 我按照一步一步教程将SDWebImage安装到我的Xcode项目中。 当我尝试构build我的应用程序时,出现以下错误: Lexical or Preprocessor Issue 'SDWebImage/UIImageView+WebCache.h' file not found 有人可以帮我解决这个问题吗?

如何安装SDWebImage

我需要在我的应用程序中pipe理照片,并阅读了大量有关SDWebImage框架,这似乎是最好的方法。 不过,我发现安装难度非常大。 我不知道Ruby,从来没有使用podfile,所以通过下载最新的SDWebImagefolder&框架并将其添加到我的项目来安装它。 但是,当我尝试使用build议的导入导入到我的viewcontroller: #import <SDWebImage/UIImageView+WebCache.h> #import "UIImageView+WebCache.h" 我得到的文件没有在#importfind,那么如果我改变这个“SDWebImage / UIImageView + WebCache.h”build议我得到一个文件没有find:#import UIImageView + WebCache.h即使我可以清楚地看到当我打开我的项目中的SDWebImage文件夹! 我猜测这些错误也会导致一个未find错误,当我尝试使用sd_setImageWithUrl方法。 这里是我的项目的屏幕截图: 我希望我可以得到一些帮助,因为框架看起来有非常好的function。 任何帮助非常感谢。 谢谢

iOS应用程序在PushViewController上冻结

我的导航控制器间歇性地冻结推。 它似乎将新的视图控制器添加到堆栈,但animation永远不会发生。 我还有两个容器可以在屏幕上保存视图控制器,在导航控制器冻结之后,我可以很好地与它们交互。 真正有趣的是,如果我尝试将另一个视图控制器推到导航控制器的堆栈上,我注意到堆栈顶部有一个额外的视图控制器(我最初推送的视图控制器冻结了导航控制器)。 因此,如果我在主屏幕上(我们将它称为VC-Home),并尝试推新视图(VC-1)并冻结,则尝试推新视图(VC-2)这是我在推送之前在当前堆栈中看到的内容: { [VC-Home, VC-1] } 和pushViewController被调用后,它保持不变; VC-2不被添加到堆栈。 从我所知道的情况来看,导航控制器通过在animation开始之前使以前的视图控制器处于非活动状态来启动animation,但是animation从未发生,导致导航控制器处于冻结状态。 我通过调用UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ViewController")从故事板创build新的视图控制器,所以我不认为这里有任何问题。 我也没有重写导航栏上的pushViewController。 关于我的应用程序的一些独特的事情是它是非常高分辨率的图像沉重(使用SDWebImage来pipe理),我一次总是有三个容器在屏幕上(一个导航控制器,一个视图控制器search,一个交互式阴沟/侧面/滑出菜单)。 CPU使用率低,内存使用情况正常(发生冻结时稳定在60-70MB左右)。 有什么想法可能会导致这个或任何debugging技巧,可以帮助我发现真正的问题? 更新 没有唯一的代码UINavigationController,因为我只是推pushViewController()。 这是调用它的代码: func didSelectItem(profile: SimpleProfile) { let vc = UIStoryboard.profileViewController() vc.profile = profile navigationController?.pushViewController(vc, animated: true) } 我推送的ViewController在viewDidLoad中有以下代码: override func viewDidLoad() { super.viewDidLoad() button.roundView() if let type = profile?.profileType { //load multiple view controllers […]

SDWebImage清除caching

我正在显示从网站下载的图标列表,并在表格视图中显示文字。 图标可以在服务器端进行更改,只要新图标可用,我需要将其replace。 我尝试使用下面的代码: [imgView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"table_avatar_icon"] options:SDWebImageCacheMemoryOnly]; 并调用[[SDImageCache sharedImageCache] clearMemory]; 在我的刷新callback,但它不清除caching的内容。 更重要的是,即使我closures了应用程序并再次打开,图像仍然存在。 我发现只有一种方法来清除caching,它是通过调用[[SDImageCache sharedImageCache] clearDisk]; 。 这只有在我closures并重新打开应用程序后才有效。 如何强制SDWebImage不使用磁盘caching?

SDWebImage在caching之前处理图像

我从网上获取大量图片,并且它们都是大小不一的 – 它们可以是大的,小的等等。 所以我可以调整它们的大小,当我在单元格中显示他们,但这是低效的。 在SDWebImage下载并caching大小后重新调整它们的方式会更好,而不是在磁盘上存储大图像并为每个单元resize。 那么我怎样才能用SDWebImage来做到这一点,或者我不得不在课堂上进行一些攻破?