Eu tenho um aplicativo iOS muito simples, com um uiwebview carregando uma página de teste muito simples (test.html):
<html>
<body>
<img src="img/myimage.png" />
</body>
</html>
Carrego esse arquivo test.html na minha visualização da web:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
NSString *html = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
NSURL *baseUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
[webView loadHTMLString:html baseURL:baseUrl];
Isso funciona bem se eu referenciar a imagem sem o caminho relativo e colocar a imagem referenciada no caminho raiz em Destinos -> Copiar recursos do pacote no XCode, no entanto, não consigo fazê-lo funcionar com o caminho relativo, conforme mostrado no meu arquivo html . Deve haver uma maneira de fazer isso, tenho muitas imagens, css, arquivos javascript que quero carregar na visualização da web e gostaria de não ter que ter tudo na raiz e alterar todas as referências na minha web aplicativo.
@"www/app"
para o diretório arg?Em Swift:
fonte
requestURL
embora.Coloquei tudo em uma linha (pelo menos eu sei) e não tive problemas com isso:
fonte
Eu simplesmente faço isso:
Onde "index.html" referencia relativamente imagens, CSS, javascript etc.
fonte
Resposta rápida 2.
A referência de classe UIWebView desaconselha o uso de webView.loadRequest (request):
Nesta solução, o html é lido em uma string. O URL do html é usado para descobrir o caminho e o passa como um URL base.
fonte
Voltei, testei e re-testei isso, parece que a única maneira de fazê-lo funcionar (já que tenho alguns arquivos na pasta img e outros em js / css, etc ...) não é use um caminho relativo para minha imagem no html e tenha tudo relacionado à pasta do pacote. Que pena :(.
fonte
A resposta de @ sdbrain no Swift 3:
fonte
No Swift 3.01 usando o WKWebView:
Isso ajusta algumas das alterações mais refinadas da sintaxe no 3.01 e mantém a estrutura de diretórios no lugar para que você possa incorporar arquivos HTML relacionados.
fonte
let localURL = URL.init(fileURLWithPath: Bundle.main.path(forResource: "index", ofType: "html", inDirectory: "mapa_procesos")!) webView.loadRequest(URLRequest(url: localURL))