我有以下代码
TTImageView* chart = [[[TTImageView alloc] initWithFrame:CGRectMake(2,2,30, 30)] autorelease];
chart.backgroundColor = [UIColor clearColor];
chart.defaultImage = nil;
chart.urlPath = @"http://test.com/test.png";
我需要刷新图像,所以我在上面调用重载功能 图表。但是图表没有刷新。 我发现TTURLCache缓存了图像。所以在app委托时 应用程序刚刚开始我执行以下操作:
[TTURLCache sharedCache].disableImageCache = YES;
[[TTURLCache sharedCache] removeAll:YES];
但是,图像仍然没有刷新。任何帮助都会 赞赏。我也意识到每当我做[图表重新加载],并检查[chart isLoading]时,它总是正确的,这意味着请求不会以某种方式发送。
答案 0 :(得分:2)
在设置URL并确保从主线程
进行调用后添加重新加载调用[chart reload];
答案 1 :(得分:1)
当我尝试将用户头像加载到UIButton视图中时,我遇到了类似的问题。我需要使用TTImageView的委托协议来更新按钮的图像。例如:
self.avatarImageView = [[TTImageView alloc] initWithFrame:CGRectMake(10, 10, 50, 50)];
self.avatarImageView.defaultImage = TTIMAGE(@"bundle://defaultAvatar.png");
self.avatarImageView.delegate = self;
self.avatarImageView.urlPath = @"http://www.site.com/path/to/image.png"
设置urlPath后,请求将在后台进行。当您符合TTImageViewDelegate时,您可以访问以下委托方法。
/**
* Called when the image begins loading asynchronously.
*/
- (void)imageViewDidStartLoad:(TTImageView*)imageView {
NSLog(@"loading image...");
}
/**
* Called when the image finishes loading asynchronously.
*/
- (void)imageView:(TTImageView*)imageView didLoadImage:(UIImage*)image {
NSLog(@"loaded image!");
[self.avatarImageButton setImage:image forState:UIControlStateNormal];
}
/**
* Called when the image failed to load asynchronously.
* If error is nil then the request was cancelled.
*/
- (void)imageView:(TTImageView*)imageView didFailLoadWithError:(NSError*)error {
NSLog(@"error loading image - %@", error);
}
当图像成功加载后,我可以将它用于我的UIButton,就像你在imageView:didLoadImage方法中看到的一样。
希望这有助于阐明这个问题。我知道这是一个老问题,但也许以后会帮助其他人。
答案 2 :(得分:0)
清除缓存后,您还应重置TTImageView。一个简单的方法是调用[chart unsetImage],然后再次设置urlPath。 在不清除缓存的情况下执行此操作的另一种方法是向URL添加虚拟参数。
chart.urlPath = @"http://test.com/test.png?dummy=dummy";