![](/img/trans.png)
[英]ios SdWebImage image wont display when resize image using Thumbor third party
[英]unable to display image using SDWebImage
iPhone新手在這里。 我有一張要顯示從rss feed獲取的圖像。 我目前正在使用下面的代碼,但是可以減慢視圖中元素的加載速度:
for(int i=0; i<[bannerArray count]; i++){
NSString *bannerImagestr = [[bannerArray objectAtIndex:i] BannerImage];
bannerImagestr = [ bannerImagestr stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL *banURL= [NSURL URLWithString:bannerImagestr];
NSData *data = [NSData dataWithContentsOfURL:banURL];
imgEventDetail = [[[UIImage alloc] initWithData:data] autorelease];
[banEventDetailArray addObject:imgEventDetail];
}NSLog(@"the banEventDetailArray is %@",banEventDetailArray);
我嘗試使用SDWebImage API使其快速加載,但無法獲取圖像。 我一直在使用的代碼如下:
for(int i=0; i<[bannerArray count]; i++){
NSString *bannerImagestr = [[bannerArray objectAtIndex:i] BannerImage];
bannerImagestr = [ bannerImagestr stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL *banURL= [NSURL URLWithString:bannerImagestr];
[banIconImage setImageWithURL:banURL placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
banImg=banIconImage.image;//<<<-------- updated here banImg is an instance of UIImage
[banEventDetailArray addObject:banImg];
}NSLog(@"the banEventDetailArray is %@",banEventDetailArray);
我需要UIImage
形式的banEventDetailArray
,因為我在下面的代碼中設置了此數組,該代碼以(UIImage *)
作為其參數
[eventsdetailroundedButtonType setBackgroundImage:[banEventDetailArray objectAtIndex:numTimerTicks] forState:UIControlStateNormal];
請幫助我找到我遺漏的地方以及可能出錯的地方。
提前致謝。
更新:我已經替換了第二個代碼塊中的一行。 即banImg = banIconImage.image; 在第11行。
您可以將圖片網址用作查找緩存圖片的鍵:
UIImage *myCachedImage = [[SDImageCache sharedImageCache] imageFromKey:[NSString \
stringWithFormat:@"%@",banURL]];
我猜問題出在這行:
[banIconImage setImageWithURL:banURL placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
banImg=[[UIImage alloc]init]; // <-- here: empty image
[banIconImage setImage:banImg]; // <-- here: overriding banURL image
由於您是:
首先,從網址獲取圖片;
用一個空的圖像覆蓋該圖像。
使用此代碼,而不是:
[banIconImage setImageWithURL:banURL placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
[banEventDetailArray addObject:banIconImage];
即,您將檢索到的圖像添加到數組中,然后在以后使用。
您需要跟蹤UIImageView
因為它是SDWebImage
。 確實,在獲取圖像時,該視圖處理了占位符的顯示。 當圖像在那里時,它將被替換。
僅在獲取實際圖像后才能獲取image
屬性,否則只能獲取占位符。
為什么要兩次設置圖像? 沒道理
[banIconImage setImageWithURL:banURL placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
banImg=[[UIImage alloc]init];
[banIconImage setImage:banImg];
嘗試刪除第二個設置,應該是。
[banIconImage setImageWithURL:banURL placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
編輯:邏輯仍然沒有意義。 您可能正在嘗試將UIImageView
的圖像添加為數組中的對象,這意味着您的代碼應該看起來像這樣。
NSString *bannerImagestr = [[bannerArray objectAtIndex:i] BannerImage];
bannerImagestr = [ bannerImagestr stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL *banURL= [NSURL URLWithString:bannerImagestr];
[banIconImage setImageWithURL:banURL placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
[banEventDetailArray addObject:banIconImage.image];
在確定您不需要的代碼之前先嘗試一下代碼,顯然您並不完全知道自己想要什么。 如果這是您的問題的答案,請將其標記為解決方案。
您的數組不包含圖像對象。 而是保留指向UIImage對象的指針(引用)。 如果您查看自己的工作代碼,就會發現:
imgEventDetail = [[[UIImage alloc] initWithData:data] autorelease];
[banEventDetailArray addObject:imgEventDetail];
您使用數據創建並添加imgEventDetail UIImage對象的新實例,然后將其添加到數組中。 您需要對底部(不起作用)的代碼執行相同的操作。
在不起作用的代碼中嘗試以下操作:
[banEventDetailArray addObject:banIconImage.image]; // array automatically retains.
所有這些都假定您使用SDWebImage API正確下載了圖像。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.