我最近遇到了动态(懒惰)在UIScrollView中放置的元素(UIViewController-Subclasses)中加载图像的问题。
情况如下:
到目前为止这么好,延迟加载效果很好,并且重复使用我的书籍元素也很有用......
问题是只有在UIScrollview完成滚动动画后才会显示异步加载的图像。
我已经尝试过像setNeedsDisplay这样的东西(一旦图片finisehd加载)。但它根本没有帮助......
我向你们提出一些建议......
感谢, 山姆
答案 0 :(得分:2)
您必须将NSURLConnection设置为在主运行循环上调用其delagate,以便可以更新UI。查看NSURLConnection class reference并搜索:
- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode
代码应如下所示:
urlConn = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[urlConn scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[urlConn start];
在获取图像时将连接运行循环模式设置为 NSRunLoopCommonModes 使代表能够在主运行循环处于UI事件跟踪模式时更新UI,例如,当滚动表视图或滚动视图时。
答案 1 :(得分:0)
您使用的是网络框架吗?
如果不是,我会建议使用AFNetworking。请参阅以下代码:
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
[imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]];
见这里: