以前我們加載本地文件的時候也許沒有注意,可是在Xcode9中會出現許多問題,經常會出現圖片無法顯示,本地html無法加載等問題;
當然不是Xcode的問題,只是以前我們並沒有注意,其實Xcode對這些文件有一些要求;
在使用本地資源文件的時候,直接拖動文件或者文件夾到工程里是不會被檢測到的,所以這個時候你的文件的路徑就是不存在,正確的做法是 AddFile+
在拖動一些類的時候如果也出現這種找不到頭文件的問題也可以使用這種方式重新添加一次 ;
另外使用這種方式在加載html文件的時候,有時候會出現css文件無法加載的情況,造成這種問題出現的原因也是路徑的問題;
出現這種問題一般是資源路徑讀取的問題,我們把包含 HTML 文件的文件夾拖入工程的時候一般情況下是這樣的:
一般情況下我們的 Added folders 選項都是選的 Create Groups 選項,工程中被加入的文件夾是黃顏色的:
以這種方式加入工程的文件夾,文件夾下的文件在iOS沙盒中全都被保存在一個 mainBundle 根路徑下,即不管加入項目的文件的目錄結構如何,在 APP 中都可以通過 mainBundlePath/filename 來訪問到,而原來的目錄結構則不存在了。而 HTML 中的圖片和 CSS 文件的引用方式寫的則是絕對路徑。因此 HTML 中的路徑就不對,需要把引用文件的代碼如:
href="css/min/home.min.css" src="images/qq.gif" 全部替換為這種樣式,不用寫路徑了 href="min.css" src="qq.gif"
當然 如果你想這樣去改,就等着猝死吧。什么?你想讓h5去改,你就等着被打死吧!
這里,我們有一個做法就是在選擇 Added folders 選項時選擇 Create folder references
這時加入工程的文件夾是藍顏色的
這個時候就可以使用絕對路徑進行加載了 :代碼如下
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; webView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; webView.scrollView.bounces = NO; webView.delegate = self; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"movie-item" ofType:@"html" inDirectory:@"qihooloan"]]]]; [self.view addSubview:webView];
當然你仍然可以遇見無法加載的情況,筆者就遇到了這種問題,造成這個問題的原因應該也與我們拖動文件有關系,所以我又使用了 addFile ++
問題就解決了,希望有所幫助