使 UIImageView 使用解析后的照片进行动画处理

Posted

技术标签:

【中文标题】使 UIImageView 使用解析后的照片进行动画处理【英文标题】:Make UIImageView use parsed photos to animate 【发布时间】:2013-10-29 12:36:41 【问题描述】:

我想使用 photos 我从 my API 解析来制作 UIImageView 动画。

我收到了urls of the photos in an array,但我不知道如何下载照片,put them in an array and then in the image view.

谁能帮我解决这个问题?我想不通:(

提前致谢。

【问题讨论】:

【参考方案1】:

你需要使用 NSData 方法下载它们:initWithContentsOfURL:options:error,然后从这个 NSData 创建一个 UIImage。

下载完所有图片后,你有一个 UIImage 数组,用这个数组设置 UIImageView 的 animationImages 属性。

当然,在线程中下载图像,这样您就不会阻塞 UI。

【讨论】:

+1 for 当然,在线程中下载图像,这样您就不会阻塞 UI 但是我他们都有不同的网址? 您需要在 for 循环中运行这些 URL,并在一个线程中下载它们中的每一个。在下载结束时将它们添加到数组中(当然是在主线程中)。当数组中的图片数量达到 url 的数量时,您就知道您下载了所有图片,然后您可以将其添加到图片视图中(同样,在主线程中)。【参考方案2】:

要从 url 将图像添加到 imageview,解决方案是直接的:

imageView.image = [UIImage imageWithContentsOfURL:theURL];

对于很多图像来说,最好异步加载它们并使用图像缓存。有很多开源库,例如 SDWebImage。

【讨论】:

【参考方案3】:

使用这个download images

或使用 AFNetworking 库 link 下载图像。下载库并将 AFNetworking 文件夹添加到您的项目中。添加所需的框架(Security、MobileCoreServices 和 SystemConfiguration)并使用 AFImageRequestOperation 类。

使用此代码下载图片

    -(void)downloadImage:(NSString *)imageUrl 

    // download the photo

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:imageUrl]];
    AFImageRequestOperation *operation = [AFImageRequestOperation
                                          imageRequestOperationWithRequest:request
                                          imageProcessingBlock:nil
                                          success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
                                          
                                              if (image != nil) 
                                                  NSLog(@"image downloaded %@", image);
                                                  [self.imageArray addObject:image];
                                              

                                             //put code to add image to image view here 
                                           failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) 
                                              NSLog(@" error %@", error.description);

                                          ];

    [operation start];



【讨论】:

以上是关于使 UIImageView 使用解析后的照片进行动画处理的主要内容,如果未能解决你的问题,请参考以下文章

使UIImageView适合屏幕宽度但保持纵横比[swift]

在 UIImageView 上绘制使图像透明

像 FB 封面照片一样在 UIImageView 上调整图像

UIImageView 手势(缩放、旋转)问题

使用 SDWebImage 下载的图像的 UIImageView 幻灯片

将 UIImage 用于 UIImageView 时 UIImage 失真