2012-04-27 49 views
1

我有UIScrollView,它包含來自服務器的圖像。在UIScrollView中加載圖像時的活動指示器

我應該在圖像當前加載時放置活動指示器。

UIScrollView包含來自服務器的動態圖像數量。

我可以知道如何在圖像加載時在每個頁面上添加活動指示器,並且在加載圖像後移除它。

這裏是我的代碼來檢索圖片:

NSDictionary *items = [NSDictionary dictionaryWithObject:dictInfo forKey:@"images"]; 
imageList = [items objectForKey:@"images"]; 
NSArray *img = [imageList objectForKey:@"list"]; 
NSInteger imgCount = [img count]; 
buttonArray = [[NSMutableArray alloc] init]; 

for (int i=0; i<imgCount; i++) { 
    NSDictionary *imgDict = [img objectAtIndex:i]; 
    // REQUEST FOR IMAGES 
    NSString *imgPath = [imgDict objectForKey:@"image_slot"]; 
    NSString *imgURL = imgPath; 

    __block ASIHTTPRequest *requestImage = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:imgURL]]; 
    [requestImage setCompletionBlock:^{ 
     imgView = [UIImage imageWithData:[requestImage responseData]]; 

     if (imgURL.length) { 
      [pendingRequests removeObjectForKey:imgURL]; 
     } 

     scrollView.userInteractionEnabled = YES; 
     scrollView.exclusiveTouch = YES; 
     scrollView.canCancelContentTouches = YES; 
     scrollView.delaysContentTouches = YES; 
     scrollView.bounces = NO; 

     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 

     SWTUIButton *imgBtn = [[SWTUIButton alloc] initWithFrame:frame]; 
     imgBtn.url = [requestImage.userInfo objectForKey:@"rURL"]; 
     [imgBtn setImage:imgView forState:UIControlStateNormal]; 
     imgBtn.backgroundColor = [UIColor clearColor]; 
     [imgBtn addTarget:self action:@selector(buttonpushed:) forControlEvents:UIControlEventTouchUpInside]; 
     [scrollView addSubview:imgBtn]; 

     [buttonArray addObject:imgBtn]; 

     [imgBtn release]; 

     self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * img.count, self.scrollView.frame.size.height); 
    }]; 

回答

1

我強烈建議你使用NINetworkImageView從https://github.com/jverkoey/nimbus項目。 它非常輕巧實用。 我有一個委託方法,讓你知道何時加載圖像。 什麼你基本上需要做的是:1。 創建NINetworkImageView的每一頁,就像你的UIImageView做的,呼叫建立

NINetworkImageView* networkImageView = [[[NINetworkImageView alloc] initWithImage:initialImage] 
             autorelease]; 
    networkImageView.delegate = self; 
    networkImageView.contentMode = UIViewContentModeCenter; 
[networkImageView setPathToNetworkImage: 
    @"http://farm3.static.flickr.com/2484/3929945380_deef6f4962_z.jpg" 
          forDisplaySize: CGSizeMake(kImageDimensions, kImageDimensions)]; 

https://github.com/jverkoey/nimbus/tree/master/examples/photos/NetworkPhotoAlbums

  1. 的指標添加到networkImageView作爲子視圖。
  2. 實現委託如下:

    - (無效)networkImageView:(NINetworkImageView *)ImageView的didLoadImage:(的UIImage *)圖像{ [ImageView的removeAllSubviews];

    }

最終的結果將是做同樣的事情更小的代碼。

+0

感謝您的回覆.. 我只是新iOS開發..我使用的是該工程..不好受 我做了什麼,而不是爲我創建了一個屬性(UIActivityIndi​​catorView)爲按鈕。活動指示器將可見,然後在圖像加載後停止動畫。 – lee 2012-05-11 06:44:34

相關問題