проверка изображений в UIWebview - PullRequest
1 голос
/ 22 марта 2011

У меня есть UIWebview, где я отображаю текст и изображения (данные извлекаются из и в xml-фиде). ​​Путь к изображениям состоит из идентификатора, добавляемого к строке и преобразуемого в URL, а затем помещаемого в виде в виде веб-просмотра.,однако это означает, что на пути не всегда может быть изображение, поэтому я вставил

NSURL *url = [NSURL URLWithString:imagePath];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];
if(img == nil){
    imagePath = @"http://website.co.uk/filesout/pic.jpg";
}

, чтобы проверить, существует ли изображение, и если не использовать изображение-заполнитель, проблема в том, что он немного неуклюжийи медленно

есть ли другие более элегантные способы сделать это?

Ответы [ 2 ]

0 голосов
/ 22 марта 2011

Я бы предложил использовать изображения-заполнители по умолчанию в вашем html. Визуализируйте ваш HTML полностью и покажите его. Тем временем загрузите ваши изображения. Чтобы установить изображения в уже обработанном html, вы можете добавить javascript с помощью stringByEvaluatingJavaScriptFromString: , как только они будут полностью загружены. Вы должны установить идентификаторы для тегов img, чтобы идентифицировать каждое изображение, которое хотите обменять позже, например, md5-хэш URL-адреса изображения. Код может выглядеть примерно так:

Objective-C - stringByEvaluatingJavaScriptFromString

- (void)imageLoadedSuccessfullyWithBundlePath:(NSString *)aBundlePath andId:(NSString *)anId
{
   [webview stringByEvaluatingJavaScriptFromString:
    [NSString stringWithFormat:@"document.getElementById('%@').src = '%@';", 
     anId, aBundlePath]];
}
0 голосов
/ 22 марта 2011

Если заполнитель-рис всегда один и тот же, вы должны интегрировать его в свой проект и доставить в приложении.Таким образом, он не будет загружаться при каждом использовании, а загружаться из вашего основного пакета.Это должно ускорить его, по крайней мере, для изображений-заполнителей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...