#objective-c #cocoa #webkit
#objective-c #cocoa #webkit
Вопрос:
Я хочу иметь WebView, который отображает некоторые статические файлы из пакета приложений. Поскольку у меня большое количество небольших файлов, я хотел бы упаковать их все в сжатый архив, чтобы приложение не занимало слишком много места. Каков наилучший способ добиться этого?
Комментарии:
1. Просто мысль: поддерживает ли WebKit веб-архивы Safari?
2. @Bavarious: Я не знаю, но я выясню. Похоже, что у этого подхода есть потенциал.
Ответ №1:
Это должно вам помочь: http://code.google.com/p/ziparchive /
Для отображения данных в WebView:
В Mac OS X используйте WebFrame с loadHTMLString:baseURL:
В iOS используйте UIWebView с loadHTMLString:baseURL:
Комментарии:
1. Что ж, это частично отвечает на вопрос. К сожалению, это не отвечает на самую сложную часть: как заставить WebKit загружать файлы, находящиеся внутри архива. (Я мог бы сначала распаковать архив в файловую систему, но это полностью противоречит цели.)
2. Какие файлы вы пытаетесь отобразить в WebView?
3. Просто обычный веб-материал. HTML, CSS, Javascript, изображения.
Ответ №2:
Что вы, вероятно, хотите сделать, так это реализовать подкласс NSURLProtocol, который будет разрешать относительные URL-адреса путем чтения их из zip-архива. Таким образом, вам нужно только изначально прочитать «основной» HTML-файл из ZIP-файла в память, а остальные будут считаны по требованию. Чтобы заставить WebKit использовать ваши пользовательские протоколы URL для разрешения относительных путей, вы могли бы создать экземпляр WebView следующим образом:
[[web_view mainFrame] loadHTMLString:your_main_html baseURL:[[NSURL alloc] initWithString:@"zip:///"]];
У Apple есть действительно хороший пример объединения пользовательского протокола URL с WebView здесь: