1

我正在开发一个需要以下功能的应用程序。

  1. 从服务器下载多个图像文件。
  2. 将其显示为网格格式。

为满足以上要求,

我用 .xib 文件制作了自定义视图。并将其添加到滚动视图中。

但是不知道如何异步下载图像并将其显示在适当的位置。

我在网格样式中添加自定义视图的代码在这里。

-(void)LazyLoading_display_Objects_in_grid_style
{

    for(int i=0; i<[imageListingArray count] ; i++)
    {
        NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
        MyView *myView = (MyView *)[arr objectAtIndex:0];
        myView.frame = CGRectMake(x,y,width,height);
myView.imgPhoto setContentMode:UIViewContentModeScaleAspectFit];
        myView.imageURL = [NSString stringWithFormat:@"%@",[[imageListingArray objectAtIndex:i] valueForKey:@"name"]];
 [myView setBackgroundColor:[UIColor clearColor]];

        if(myView.imgPhoto.image == nil)
            [myView.actLoading startAnimating];

        [myView.imgPhoto setTag:1000+i];

        [myView setUserInteractionEnabled:TRUE];
        myView.tag = 100+i;

        [self.imageListingScrollView addSubview:myView];

        if(current_no_of_object_in_row !=noOfObjectInColumn)
        {
            x =x + width + 8 ;
            current_no_of_object_in_row ++;
        }
        else
        {
            current_no_of_object_in_row =1;
            x = 5;
            y = y+ height + 8 ;
        }
        scrollView_Height = y;
    }
int temp = [imageListingArray count]%noOfObjectInColumn;

    if(temp>0)
    {
        NSLog(@"No modulus");
        y = y + height+ 10;
    }
    scrollView_Height = y;
    NSLog(@"Scroll Height : %d",scrollView_Height);
    [self.imageListingScrollView setContentSize:CGSizeMake(308, scrollView_Height+ 5)];
}
4

3 回答 3

1

您可以使用 UITableView,而不是创建多个视图。它可以作为 UIScrollViews 和 Grid 显示。此链接可能会帮助您:

http://www.markj.net/iphone-asynchronous-table-image/ http://davidgolightly.blogspot.in/2009/02/asynchronous-image-caching-with-iphone.html https://developer.apple .com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html

于 2013-01-08T07:07:54.787 回答
1

取一个 UITableView 实例并像这样旋转它:

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2.0f);    
table.transform = transform;  

U 可能还必须旋转 UITableView 内的单元格,同样在

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
  CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2.0f);
  cell.transform = transform;
}

如果像这样使用 UIScrollView 那么你必须处理内存可以查看myquestion

于 2013-01-08T07:18:08.317 回答
1

您可以尝试使用 AsyncImageView 类。它是 UIImage 的扩展,允许从直接 URL 异步下载图像。我在很多项目中都使用了类似的扩展。你只需要调用方法

- (void)loadImageWithURL:(NSURL *)URL;

并且何时将检索数据图像将出现在此视图中。 https://github.com/nicklockwood/AsyncImageView

如果您为所有 iOS 的 UITableView 的 iOS 6+ 项目制作项目,则可以使用 UICollectionView 类制作网格。如果您将使用 UITableView,您可以在左侧和右侧使用两个 AsyncImageView 对象制作自定义单元格。

于 2013-01-08T10:08:04.327 回答