簡體   English   中英

如果在iphone中向下滾動scrollview,如何下載和顯示服務器圖像

[英]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];
}

好了,有一個很好的基礎類可以用於異步下載和顯示圖像。

SDWebImage

自己動手做所有事情比所需的工作多,並且不利於內存管理。 考慮使用表或集合視圖來管理滾動,這樣就不會同時加載太多視圖,因此不需要代碼來呈現所有內容。

您已經在使用AsyncImageView ,如果您將其添加到要顯示的單元格中並根據委托/數據源方法的要求進行配置,它將可以正常工作。

您還應該考慮充當滾動視圖委托並監視滾動完成。 如果用戶滾動到當前底部,則可以添加帶有活動指示器的頁腳視圖,從服務器開始加載下一頁,然后重新加載視圖並在下載新頁面時刪除頁腳。

從我對您的問題的理解中,您想創建一個連續三張圖像的圖像網格。 但是你的方法是錯誤的...!

不要使用scrollView,而要使用UITableView。 我認為,如果您的目標是iOS 6.0或更高版本,則可以使用UICollectionView

這是您需要做的:

  • 創建自定義的UITableViewCell,其中包含連續需要的圖像數量。 您也可以在創建單元格時傳遞所需的網格項目數量,並在其中創建這些視圖並將其作為子視圖放置在單元格中,以使其動態化。
  • 重復使用表格中的單元格以填充網格。
  • 您可以緩存圖像以獲得更好的性能,我建議您使用SDWebImage
  • cellForRowAtIndexPath您可以配置所有gridItems。

您是否需要更多幫助...?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM