1

我正在使用双 for 循环以网格格式将 UIButtons 添加到 UIScrollView。这些 UIButtons 需要一些时间来加载,因为它们具有 UIImageViews 的子视图,这些子视图通过从 Internet 下载数据来获取它们的 UIImages。

现在,直到方法完全执行完成后,子视图才会显示。如果我错了,请纠正我,但我猜 xcode 在方法执行完成之前不会显示添加的子视图。

但是,我确实想显示每个子视图一次添加一个,作为一种很酷的加载效果。我将如何实现这一点?

谢谢!

4

1 回答 1

3

你应该使用多个线程来加载你的图片,这样你的主线程就不会变得迟缓。viewWillAppear我最近写了类似的东西......从我的方法中看一下我的代码:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    self.myImages = [self.myModel retrieveAttachments]; //Suppose this takes a long time
    for (UIImage *image in self.myImages) 
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            [self addImageToScrollView:image animated:YES]; });
    }
}
});

addImageToScrollView 方法是这样的:

-(void) addImageToScrollView: (UIImage *) image animated: (BOOL) animated
{
    //Create image view
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.image = image;

    if(animated)
    {
        imageView.alpha = 0;
        [self.myScrollView addSubview:imageView];
        [UIView animateWithDuration:ADD_IMAGE_APPEARING_ANIMATION_SPEED animations:^{
            imageView.alpha = 1;
        }];
    }
    else
    {
        [self.myScrollView addSubview:imageView];
    }
}
于 2012-07-19T15:38:51.517 回答