2012-04-27 29 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

相关问题