如果在iphone中向下滚动scrollview,如何下载和显示服务器图像

如果在iphone中向下滚动scrollview,如何下载和显示服务器图像,iphone,ios,objective-c,Iphone,Ios,Objective C,我不熟悉iPhone编程 使用下面的代码,我可以下载并显示服务器上的所有图像。但在服务器中,我有超过1000张的图像。所以使用下面的代码,我可以下载并在scrollview中显示为3*3缩略图 但我想要的是,首先我必须下载15幅图像,并在scrollview中显示为3*3的缩略图 如果我向下滚动意味着我必须显示活动指示器,然后下载下一张表格16至30图像,同样,如果我向下滚动意味着我要下载并在缩略图中显示31至45图像 我不想从服务器下载所有图像 能告诉我怎么做吗 - (void)viewDid

我不熟悉iPhone编程

使用下面的代码,我可以下载并显示服务器上的所有图像。但在服务器中,我有超过1000张的图像。所以使用下面的代码,我可以下载并在scrollview中显示为3*3缩略图

但我想要的是,首先我必须下载15幅图像,并在scrollview中显示为3*3的缩略图

如果我向下滚动意味着我必须显示活动指示器,然后下载下一张表格16至30图像,同样,如果我向下滚动意味着我要下载并在缩略图中显示31至45图像

我不想从服务器下载所有图像

能告诉我怎么做吗

- (void)viewDidLoad
{
    URLs = [[NSMutableArray alloc]init];

    for (NSString *path in latestiamge)
    {
        NSURL *URL = [NSURL URLWithString:path];

        if (URL)
        {
            [URLs addObject:URL];
        }
        else
        {
            NSLog(@"'%@' is not a valid URL", path);
        }
    }

    self.imageURLs = URLs;

    myScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0.0, 84.0, 320.0, 840.0)];
    myScrollView.delegate = self;
    myScrollView.contentSize = CGSizeMake(320.0, 840.0);
    myScrollView.backgroundColor = [UIColor whiteColor];

    [self.view addSubview:myScrollView];

    float horizontal = 2.0;
    float vertical = 2.0;

    for(int i=0; i<[imageURLs count]; i++)
    {
        if((i%3) == 0 && i!=0)
        {
            horizontal = 5.0;
            vertical = vertical + 100.0 + 5.0;
        }

        CGRect frame;
        frame.size.width=100.0;
        frame.size.height=100.0;
        frame.origin.x=0;
        frame.origin.y=0;

        AsyncImageView *imageView = [[AsyncImageView alloc] initWithFrame:frame];
        imageView.contentMode = UIViewContentModeScaleAspectFill;
        imageView.clipsToBounds = YES;
        imageView.tag = i;
        UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
                                             initWithTarget:self
                                             action:@selector(actionHandleTapOnImageView:)];

        imageView.userInteractionEnabled = YES;
        [imageView addGestureRecognizer:singleTap];

        [myScrollView addSubview:imageView];
        [myScrollView addSubview:imageView];

        horizontal = horizontal + 100.0 + 5.0;
    }

    [myScrollView setContentSize:CGSizeMake(320.0, vertical + 3900.0)];

    [super viewDidLoad];
}
-(void)viewDidLoad
{
URL=[[NSMutableArray alloc]init];
for(NSString*最新数据中的路径)
{
NSURL*URL=[NSURL URLWithString:path];
如果(URL)
{
[URL地址对象:URL];
}
其他的
{
NSLog(@“%”不是有效的URL,路径);
}
}
self.imageURL=URL;
myScrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0.0,84.0320.0840.0)];
myScrollView.delegate=self;
myScrollView.contentSize=CGSizeMake(320.0840.0);
myScrollView.backgroundColor=[UIColor whiteColor];
[self.view addSubview:myScrollView];
水平浮动=2.0;
浮动垂直=2.0;

对于(inti=0;i有一个很好的基本类,可以用来异步下载和显示图像


尽可能地按自己的方式做每一件事都比需要的工作量更大,也不利于内存管理。请考虑使用表或集合视图来管理滚动,这样您就不会同时加载这么多视图,因此您不需要代码来完成所有的布局。

您已经在使用
AsyncImageView
,如果您向要显示的单元格中添加大量的图像,并根据委托/数据源方法的请求对其进行配置,则可以正常工作


您还应该考虑充当scroll view代理并监视滚动完成情况。如果用户已滚动到当前底部,您可以添加带有活动指示器的页脚视图,从服务器开始加载下一页,然后重新加载视图,并在下载新页时删除页脚。

我可以从你的问题中理解,你想要创建一个连续三个图像的图像网格。但是你的方法是错误的

不要使用scrollView,而是使用UITableView。我认为如果您的目标是iOS 6.0或更高版本,您可以使用

以下是您需要做的:

  • 创建自定义UITableViewCell,其中包含一行中所需的图像数。您也可以通过在创建单元格时传递所需的网格项目数,创建并将这些视图作为子视图定位在单元格中来实现此动态
  • 重用表中的单元格以填充网格
  • 您可以缓存图像以获得更好的性能,我建议您使用
  • cellforrowatinexpath
    中,可以配置所有网格项

你需要更多帮助吗…??

你想显示所有图像的占位符并按需下载每个图像吗?还是想加载图像页面?首先,你不应该在viewDidLoad方法中使用所有代码,为其创建一个单独的方法,并在ViewDidAppease方法中调用它,接下来你要做的事情可以很容易地完成th lazy loading in scroll viewk k感谢您提供replay Tanks提供replay.hey此项目显示一些错误,如thiswebp/decode.h文件未找到感谢您提供replay.hey此项目显示一些错误,如thiswebp/decode.h文件未找到这意味着…!“未找到文件”。只需将文件读回项目即可