2011-08-19 78 views
0

在iPhone应用程序我有集成流罩iPhone应用程序 - 流量封面(封面流)显示图像

我加载图像转换成流罩从Web服务器

到时候图像下载我传递图像数= 0的UIImage = NULL

这里我不是其实我已经创建单独的线程来下载和解析这样就不会花时间来加载视图

时DOWNLO像viewDidLoad中或viewWillAppear中的方法下载图像ading完成,如果触摸屏是显示所有图像,但我想在下载显示图像完成

如何使图像可见出编程任何触摸效果?

请帮忙推荐

回答

1

这可以帮助你认识下载结束。由于NSURLConnection的下载是异步,您可以使用通知时,下载完成后标记,并开始你的方法。

为NSNotifications添加观察员:

[[NSNotificationCenter defaultCenter] addObserver:self 
     selector:@selector(some_method:) name:@"some_name" object:nil]; 

在已完成的下载执行通知:

- (void) connectionDidFinishLoading:(NSURLConnection *)connection { 
    [[NSNotificationCenter defaultCenter] 
      postNotificationName:@"some_name" object:nil]; 
} 

这将启动方法:

-(void)some_method { 
    // add downloaded image to set or smth 
} 
1

使用ASIHTTP下载阿比从http://allseeing-i.com/ASIHTTPRequest/

然后整合到项目

在下面的代码投入.h文件中

#import <UIKit/UIKit.h> 

#import "AFOpenFlowView.h" 

#import "ASINetworkQueue.h" 
#import "ASIHTTPRequest.h" 

@interface cfDemoViewController : UIViewController <AFOpenFlowViewDataSource, AFOpenFlowViewDelegate> { 
    ASINetworkQueue *queue; 
    NSArray *coverImageData; 
} 
@property (nonatomic, retain) NSArray *arX; 

- (void)imageDidLoad:(NSArray *)arguments; 
-(void)requestForImage:(NSUInteger)index; 

@end 

而下面的代码投产.m文件

#import "UIImageExtras.h" 

#import "cfDemoViewController.h" 

#import "UIImageExtras.h" 


@implementation cfDemoViewController 

@synthesize arX = _arX; 

- (void)dealloc 
{ 
    [super dealloc]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

#pragma mark - View lifecycle 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSArray *ar=[NSArray arrayWithObjects:@"http://google.com/report_image/2/17", 
       @"http://google.com/report_image/2/16", 
       @"http://google.com/report_image/2/15", 
       @"http://google.com/report_image/2/14", 
       @"http://google.com/report_image/2/13", 
       @"http://google.com/report_image/2/12", 
       @"http://google.com/report_image/2/11", 
       @"http://google.com/report_image/2/10", 
       @"http://google.com/report_image/2/9", 
       @"http://google.com/report_image/2/8",nil]; 

    self.arX=ar; 

    queue=[[ASINetworkQueue alloc] init]; 

    for (int i=0; i < [ar count]; i++) { 
     [(AFOpenFlowView *)self.view setImage:[UIImage imageNamed:@"default.png"] forIndex:i]; 
    } 

    [self requestForImage:0]; 

    [(AFOpenFlowView *)self.view setNumberOfImages:10]; 
} 

-(void)requestForImage:(NSUInteger)index{ 
    if(index>=[self.arX count]) return; 
    ASIHTTPRequest *req=[ASIHTTPRequest requestWithURL:[NSURL URLWithString:[self.arX objectAtIndex:index]]]; 
    [req setDidFinishSelector:@selector(requestDone:)]; 
    [req setDidFailSelector:@selector(requestWentWrong:)]; 
    [req setUsername:[NSString stringWithFormat:@"%i",index]]; 
    [req setDelegate:self]; 
    [queue addOperation:req]; 
    [queue go]; 
} 

- (void)requestDone:(ASIHTTPRequest *)request 
{ 
    NSUInteger index=[[request username] intValue]; 
    UIImage *img=[UIImage imageWithData:[request responseData]]; 
    img=[img cropCenterAndScaleImageToSize:CGSizeMake(225, 225)]; 
    [(AFOpenFlowView*)self.view setImage:img forIndex:index]; 

    [self requestForImage:index+1]; 
    // here all requests are downloaded and you want display any msg to user that code goes here. 

} 

- (void)requestWentWrong:(ASIHTTPRequest *)request 
{ 
// NSError *error = [request error]; 
    NSUInteger index=[[request username] intValue]; 
    [self requestForImage:index+1]; 
} 


- (void)imageDidLoad:(NSArray *)arguments { 
    UIImage *loadedImage = (UIImage *)[arguments objectAtIndex:0]; 
    NSNumber *imageIndex = (NSNumber *)[arguments objectAtIndex:1]; 

    // Only resize our images if they are coming from Flickr (samples are already scaled). 
    // Resize the image on the main thread (UIKit is not thread safe). 
    loadedImage = [loadedImage cropCenterAndScaleImageToSize:CGSizeMake(225, 225)]; 

    [(AFOpenFlowView *)self.view setImage:loadedImage forIndex:[imageIndex intValue]]; 
} 

- (UIImage *)defaultImage { 
    return [UIImage imageNamed:@"default.png"]; 
} 

- (void)openFlowView:(AFOpenFlowView *)openFlowView requestImageForIndex:(int)index{ 
    NSLog(@"request for index - %d",index); 
} 

- (void)openFlowView:(AFOpenFlowView *)openFlowView selectionDidChange:(int)index { 
    NSLog(@" Hello - Cover Flow selection did change to %d", index); 
} 


- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
// return (interfaceOrientation == UIInterfaceOrientationPortrait); 
    return YES; 
} 

@end 

Also Download code From Here.