如何在UIScrollview中添加多个自定义视图

时间:2013-01-08 06:46:03

标签: iphone ios ios6

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

  1. 从服务器下载多个图像文件。
  2. 将其显示为网格格式。
  3. 满足以上要求,

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

    但无法知道如何异步下载图像并在适当的位置显示它。

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

    -(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)];
    }
    

3 个答案:

答案 0 :(得分:1)

您可以选择UITableView,而不是创建多个视图。它既可以用作UIScrollViews,也可以用作网格显示。这个链接可能对您有所帮助:

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

答案 1 :(得分: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

答案 2 :(得分:1)

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

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

当检索到数据时,图像将出现在此视图中。 https://github.com/nicklockwood/AsyncImageView

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