TTImageView刷新图像

时间:2010-12-24 01:14:33

标签: three20

我有以下代码

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]时,它总是正确的,这意味着请求不会以某种方式发送。

3 个答案:

答案 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";