我是uisng UIWebImageView(自定义类继承UIImageView)它的工作正常,从url下载图像并显示webview,在某些情况下没有图像特别是url然后它显示空白空间,所以需要显示那里没有图像,如何找到它的返回图像。
@implementation UIWebImageView
#define kAnimationDuration 0.5
@synthesize animate;
#pragma mark -
#pragma mark Public Methods
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
imageData = [[NSMutableData alloc] init];
activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
CGFloat xCoord = (frame.size.width / 2.0f) - [activityIndicator frame].size.width;
CGFloat yCoord = (frame.size.height / 2.0f) - [activityIndicator frame].size.height;
[activityIndicator setFrame:CGRectMake(xCoord, yCoord, [activityIndicator frame].size.width, [activityIndicator frame].size.height)];
[activityIndicator setHidesWhenStopped:YES];
[self addSubview:activityIndicator];
}
return self;
}
- (id)initWithFrame:(CGRect)frame andUrl:(NSURL *)url animated:(BOOL)animated {
if (self = [self initWithFrame:frame]) {
[activityIndicator startAnimating];
animate = animated;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
if (connection)
{
}
}
return self;
}
- (void)downloadImage:(NSURL *)url {
[activityIndicator startAnimating];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
if (connection)
{
}
}
#pragma mark -
#pragma mark NSURLConnectionDelegate
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[imageData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[activityIndicator stopAnimating];
UIImage *downloadedImage = [[UIImage alloc] initWithData:imageData];
if (animate)
{
[self setAlpha:0];
[UIView beginAnimations:@"Animations" context:nil];
[UIView setAnimationDuration:kAnimationDuration];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[self setAlpha:100];
[UIView commitAnimations];
}
[self setImage:downloadedImage];
}
- (void)dealloc {
}
答案 0 :(得分:1)
尝试检查downloadedImage
是否为零,如果它为零,则显示带有“无照片”标题的标签或显示带“无照片”的图像。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[activityIndicator stopAnimating];
UIImage *downloadedImage = [[UIImage alloc] initWithData:imageData];
if (animate)
{
[self setAlpha:0];
[UIView beginAnimations:@"Animations" context:nil];
[UIView setAnimationDuration:kAnimationDuration];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[self setAlpha:100];
[UIView commitAnimations];
}
if (downloadedImage) {
[self setImage:downloadedImage];
}
else {
// no image downloaded, show "No Image" message
}
}