从JSON逐个加载照片

时间:2012-06-12 17:06:03

标签: ios xcode json image gallery

我有一个JSON服务,我在那里使用一些照片。我想用它制作一个缩略图库:

    -(void)fillPhotos:(NSMutableArray *)json{
    _loadingLabel.alpha=0;
    [SV setScrollEnabled:YES];
    if(json.count>0){
        NSDictionary *json_dictionary=[json objectAtIndex:0]; 
        NSInteger i=0;
        for(i=0;i<[[json_dictionary objectForKey:@"Photos"] count];i++){
        NSDictionary *photosDic =[[json_dictionary objectForKey:@"Photos"] objectAtIndex:i] ;
        NSString *imageUrl = [photosDic objectForKey:@"URI"];
        UIImageView* photo;
        CGRect viewRect;
            if(i % 2){
            viewRect = CGRectMake(164,146*(i/2)+10*(i/2), 146, 146);
            NSLog(@"par");
            }else{
            viewRect = CGRectMake(10,146*(i/2)+10*(i/2), 146, 146);   
                NSLog(@"impar");
            }
            photo = [[UIImageView alloc] initWithFrame:viewRect];
            photo.image=[UIImage imageWithData: [NSData dataWithContentsOfURL:[NSURL URLWithString: imageUrl]]];
            [SV addSubview:photo];
            SV.contentSize=CGSizeMake(320,146*i+146);
            [SV reloadInputViews];
        }
    }
}

它运作正常,但我有两个问题。首先,我希望视图通过照片加载照片,因此用户无需等待cicle结束即可立即查看所有照片。其次我希望照片在中心裁剪,但只占据146x146的画面。但是,如果我把Top放在内容模式中,那么照片会从他的框架中拉出来。

你能帮帮我吗?

3 个答案:

答案 0 :(得分:2)

对于第一个问题,您需要异步加载图像。究竟如何做到这一点有点超出了答案的范围(部分取决于你),但你可能想要研究NSURLConnectionNSOperationNSOperationQueue

对于第二个问题,只需设置photo.clipsToBounds = YES

答案 1 :(得分:1)

答案 2 :(得分:0)

这是88fsantos的完美教程,我在我的网络应用程序中使用它,它的美妙之处在于它非常轻巧,易于编码!只是看这个视频....

http://www.youtube.com/watch?feature=player_embedded&v=H9AF_b8wSl8