UICollectionView中的UIImage没有显示

时间:2013-07-25 19:23:54

标签: ios uiimageview uicollectionview uicollectionviewcell

出于某种原因,我无法将{64}基本编码图像显示在UIImageView的{​​{1}}中。

这是我的代码:

UICollectionView

DEBUG LOG:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"task_cell";

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    NSDictionary* json = [dataSource objectAtIndex:indexPath.row];

    [cell setBackgroundColor:[UIColor whiteColor]];

    UIImageView *image = (UIImageView *)[cell viewWithTag:100];
    UILabel *text = (UILabel *)[cell viewWithTag:101];

    NSString *ext = [[json objectForKey:@"image"] pathExtension];
    NSString *final = [NSString stringWithFormat:@"data:image/%@;base64,%@", ext, [json objectForKey:@"b64img"]];
    NSURL *url = [NSURL URLWithString:final];
    NSData *imageData = [NSData dataWithContentsOfURL:url];
    [image setImage:[UIImage imageWithData:imageData]];

    text.text = [json objectForKey:@"title"];

    return cell;
}

我确实看到Printing description of final: data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/......(goes on for a while) url = nil imageData is nil 正在改变。

那么,我该怎么做呢。

2 个答案:

答案 0 :(得分:0)

这可能是您构建图像路径的一个问题。这看起来很时髦:

NSString *final = [NSString stringWithFormat:@"data:image/%@;base64,%@", ext, [json objectForKey:@"b64img"]];

请在设置图片时发布finalurl的NSLog值以及imageData是否为零。

答案 1 :(得分:0)

我必须做以下事情来解决它..

  1. 更改网址的代码:

    NSURL * url = [NSURL URLWithString:[NSString URLEncodeString:final]];

  2. 将函数URLEncodeString添加到NSString。我使用了NSURL URLWithString:myString returns Nil?中的代码。它就像一个魅力。

  3. 并且presto ......它有效。