我正在使用双 for 循环以网格格式将 UIButtons 添加到 UIScrollView。这些 UIButtons 需要一些时间来加载,因为它们具有 UIImageViews 的子视图,这些子视图通过从 Internet 下载数据来获取它们的 UIImages。
现在,直到方法完全执行完成后,子视图才会显示。如果我错了,请纠正我,但我猜 xcode 在方法执行完成之前不会显示添加的子视图。
但是,我确实想显示每个子视图一次添加一个,作为一种很酷的加载效果。我将如何实现这一点?
谢谢!
你应该使用多个线程来加载你的图片,这样你的主线程就不会变得迟缓。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];
}
}