在我的iOS应用程序中,我有很多视图和图像,标签是该视图的子视图。视图。我的问题是从网址或远程服务器加载图像时,最后一个图像是从网址加载的。其他图像加载占位符。尝试了很多方法,但无法解决它。我的代码和屏幕截图在下面提供
catScrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 10, self.view.frame.size.width,300)];
catScrollView.contentSize = CGSizeMake(([popularCategoryArray count] * 90)/1.8 + 10, catScrollView.frame.size.height);
[_parentScrollView addSubview:catScrollView];
catScrollView.backgroundColor=UIColorFromRGB(0xE8F7FE);
catScrollView.userInteractionEnabled=YES;
catScrollView.scrollEnabled=YES;
catScrollView.delegate=self;
for(int i =0;i<[popularCategoryArray count];i++)
{
Category* category=[popularCategoryArray objectAtIndex:i];
UIView *catView = [[UIView alloc] init];
if(i>=[popularCategoryArray count]/2+1)
{
catView.frame = CGRectMake(10 + y * 100, 4*10+90+10, 90, 120);
y++;
}
else
{
catView.frame = CGRectMake(10 + x * 100, 10, 90, 120);
x=i;
}
imageCat=[[UIImageView alloc]initWithFrame:CGRectMake(10, 0, 70, 90)];
imageCat.backgroundColor=[UIColor clearColor];
[imageCat sd_setImageWithURL:[NSURL URLWithString:category.ImageURL]
placeholderImage:[UIImage imageNamed:@"wish_list"]];
[catView addSubview:imageCat];
UILabel *labelCat=[[UILabel alloc]initWithFrame:CGRectMake(0, 95, catView.frame.size.width, 25)];
labelCat.backgroundColor=[UIColor clearColor];
labelCat.text=category.BngTitle;
labelCat.textAlignment=NSTextAlignmentCenter;
labelCat.font=[UIFont fontWithName:@"HelveticaNeue-Thin" size:12.0];
[catView addSubview:labelCat];
catView.backgroundColor=[UIColor clearColor];
[catScrollView addSubview:catView];
}
答案 0 :(得分:0)
正在发生的事情是,在UIView+Webcache.m
的{{1}}方法中,每次运行循环时都会执行以下代码。
sd_internalSetImageWithURL
NSString *validOperationKey = operationKey ?: NSStringFromClass([self class]);
[self sd_cancelImageLoadOperationWithKey:validOperationKey];
总是一样的,因为在你的默认调用中没有设置它,因此它被设置为nil,而当它为nill时它只是类名。 SDWebImage有一个非常积极的政策,就是取消以前的所有请求。
有些人认为它只对同一网址的多个请求执行此操作,但此代码在URL上不会发生变化,因此可能是错误。您最好的选择可能是调用operationKey
方法并设置自己的sd_internalSetImageWithURL
(带有数字的内容,以便它们全部不同)。