【问题标题】:iPhone App - Flow Cover (cover-flow) display imagesiPhone App - Flow Cover(封面流)显示图片
【发布时间】:2011-08-19 20:43:11
【问题描述】:

在iPhone App中我已经集成了流盖

我正在从网络服务器将图像加载到流覆盖中

直到图像下载我传递图像 count= 0 和 uiimage= null

这里我没有通过 viewdidload 或 viewwillAppear 等方法下载图像,实际上我已经创建了单独的线程用于下载和解析,因此加载该视图不需要时间

下载完成时,如果触摸屏幕,它会显示所有图像,但我想在下载完成时显示图像

如何以编程方式在没有任何触摸效果的情况下使图像可见?

请帮助和建议

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios4 coverflow


    【解决方案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
    }
    

    【讨论】:

      【解决方案2】:

      使用来自http://allseeing-i.com/ASIHTTPRequest/的ASIHTTP下载API

      然后就是集成到项目中

      在以下代码中放入 .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.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-04
        • 2021-08-19
        • 2021-06-17
        • 2019-04-10
        相关资源
        最近更新 更多