[英]how to download and display server images if scrolldown the scrollview in iphone
我是iPhone编程的新手。
使用以下代码,我可以下载和显示服务器上的所有图像。 但是在服务器中,我有超过数千张图像。 所以使用下面的代码,我可以下载并以3 * 3缩略图的形式显示在滚动视图中。
但是我想要的意思是首先我必须下载并以3 * 3缩略图的形式在滚动视图中显示15张图像。
如果我向下滚动表示我必须显示活动指示器,然后下载下一个表格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];
}
好了,有一个很好的基础类可以用于异步下载和显示图像。
自己动手做所有事情比所需的工作多,并且不利于内存管理。 考虑使用表或集合视图来管理滚动,这样就不会同时加载太多视图,因此不需要代码来呈现所有内容。
您已经在使用AsyncImageView
,如果您将其添加到要显示的单元格中并根据委托/数据源方法的要求进行配置,它将可以正常工作。
您还应该考虑充当滚动视图委托并监视滚动完成。 如果用户滚动到当前底部,则可以添加带有活动指示器的页脚视图,从服务器开始加载下一页,然后重新加载视图并在下载新页面时删除页脚。
从我对您的问题的理解中,您想创建一个连续三张图像的图像网格。 但是你的方法是错误的...!
不要使用scrollView,而要使用UITableView。 我认为,如果您的目标是iOS 6.0或更高版本,则可以使用UICollectionView 。
这是您需要做的:
cellForRowAtIndexPath
您可以配置所有gridItems。 您是否需要更多帮助...?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.