UIWebViewでローカルコンテンツを読み込むには?+リソース関連の注意点

UIWebViewでローカルコンテンツを読み込むには次のようにする。リソースにあるindex.htmlを読み込む場合だ。

NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
[_webView loadRequest:req];

HTMLを作る場合、多くのケースではイメージを置いておくフォルダ、CSSを置いておくフォルダなど複数のフォルダ階層を作る。例えばこんな感じだ。

public_html/
 index.html
 css/main.css
 img/bg.jpg

しかし、iPhoneのアプリプロジェクトにこのようなpublic_htmlフォルダをインポートすると、プロジェクト上では階層構造を保ってそのままインポートされたかに見えても、アプリのリソースとしてはすべてフラットな階層にコピーされてしまうようだ。

従って、HTMLが読み込まれたときにcssやimg配下への参照がおかしくなり、読み込めないという状況になる。

もうこれは多分どうしようもないので、ローカルコンテンツとして表示させたいHTMLは完全にフラットな階層構造で作るしかないだろう。

コメント

  1. インポート時の設定でフォルダ階層保てますよ

    返信削除

コメントを投稿

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?