используя UIWebView с изображениями, не включенными в NSBundle, но загруженными - PullRequest
1 голос
/ 16 августа 2011

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

Кто-нибудь сделал это успешно?

Мои изображения загружаются по пути Documents / MyFolder / MyImage.jpg

1 Ответ

0 голосов
/ 16 августа 2011

Простой: просто скопируйте HTML, который вы хотите отобразить, в каталог документов и используйте относительные пути к файлам.

Я только что проверил это, и оно работает. Сначала скопируйте ваши активы в каталог пользовательских документов. Вот только одно изображение в качестве примера. Вы можете скопировать весь каталог и т. Д.

NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *imageURL = [documentsDirectory URLByAppendingPathComponent:@"image.gif"];
if (![[NSFileManager defaultManager] fileExistsAtPath:[imageURL path]]) {
    NSString *bundleImage = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"gif"];
    if (bundleImage) {
        [[NSFileManager defaultManager] copyItemAtPath:bundleImage toPath:[imageURL path] error:nil];
    }
}       

Также скопируйте ваши html-страницы (это просто показывает, как я настроил тест):

NSString *htmlString = @"<html>Here is a picture: <br>"
"<img src=\"image.gif\" height=100 width=100> "
"</html>";

NSURL *mainPageURL = [documentsDirectory URLByAppendingPathComponent:@"index.html"];
NSLog(@"%@", mainPageURL);
[htmlString writeToURL:mainPageURL atomically:YES encoding:NSUTF8StringEncoding error:nil];

Наконец загрузите страницу - работает как брелок.

[webView loadRequest:[NSURLRequest requestWithURL:mainPageURL]];

Предупреждение о запуске этого в iOS Simulator . URL отличается на Mac. Короче говоря, вы должны использовать формат @"file:/.../" и заменить все косые черты / на двойные косые черты //, а все пробелы на %20. Подробнее об этом в этом вопросе.

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