[英]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.