ios - 仅在从urls数组加载所有图像之后才激事件画

标签 ios objective-c animation

我不久前开始研究ObjectiveC,我试图编写一个具有两个UIImageView和一个URL数组的应用程序,以从Web加载。从URL异步加载所有图像之后,我想在UIImageViews上启动动画,该动画每3秒更改一次。我唯一的问题是,直到下载完所有图像后,我才需要动画。我到目前为止的代码是:

- (void)viewWillAppear:(BOOL)animated
{
    self.imagesArray = [[NSMutableArray alloc] init];
    [self initUrlArrayAndGetImages];
}

- (void)initUrlArrayAndGetImages
{
    self.urlsArray = @[@"abc.com/1.png",
    @"abc.com/2.png",
    @"abc.com/3.png"];

    for (int i = 0; i < [self.urlsArray count]; i++)
    {
        NSString *string = [self.urlsArray objectAtIndex:i];
        NSURL *urlFromString = [NSURL URLWithString:string];
        NSURLRequest *urlRequest = [NSURLRequest requestWithURL:urlFromString];
        [NSURLConnection sendAsynchronousRequest:urlRequest queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError)
         {
             if (!connectionError)
             {
                 UIImage *imageFromData = [UIImage imageWithData:data];
                 [self.imagesArray addObject:imageFromData];
             }
             else
             {
                 NSLog(@"%@, %@", connectionError, [connectionError userInfo]);
             }
        }];
    }

那么我将在哪里调用激 Activity 画的方法呢?因为如果我在块完成时调用它,则它一次添加一个图像(非常快,正确,但仍然始终刷新该方法...)。我最好的解决方案是什么?

提前致谢

最佳答案

您可以添加if()语句,以检查imagesArray中的图像计数是否等于urlsArray中的URL计数。如果是这样,则调用动画。看起来像:

if (!connectionError)
{
    UIImage *imageFromData = [UIImage imageWithData:data];
    [self.imagesArray addObject:imageFromData];

    if(self.imagesArray.count == self.urlsArray.count)
    {
        // All images are loaded successfully
        // Activate animation
    }
}
else
{
    NSLog(@"%@, %@", connectionError, [connectionError userInfo]);
}

重要的是要注意,这只有在所有图像都成功下载后才能起作用。如果一个或多个导致连接错误,它将不调用动画。要解决此问题,您可以轻松实现一个专用计数变量,无论是否存在连接错误,该变量在调用completionHandler时都会递增。然后使用它与self.urlsArray.count进行比较。

关于ios - 仅在从urls数组加载所有图像之后才激事件画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23873851/

相关文章:

iphone - 将 NSFetchedResultsController 与自定义 header 相结合

ios - 如何在 Swift 中创建单例

ios - 如何在 App 中将图像从 ImageView 附加到电子邮件

ios - 为已发布的 iPhone 应用程序迁移 Realm 数据库的步骤

单击时停止的 Javascript 发光/脉动效果

java - 了解 GIF 何时播放完毕

ios - 为什么使用实例类型?

ios - 如何知道是否在 iOS 6 UITableViewCell 上点击了删除按钮

ios - 从网络动态加载图像到用户界面

react-native - 如何在 native react 中添加对 Animated.sequence 的函数调用