UIWebView에 로컬 html 파일을로드하는 방법
UIWebView에 html 파일을로드하려고하는데 작동하지 않습니다. 단계는 다음과 같습니다. 프로젝트에 html_files라는 폴더가 있습니다. 그런 다음 인터페이스 빌더에서 webView를 작성하고 viewController에서 콘센트를 지정했습니다. 이것은 html 파일을 추가하는 데 사용하는 코드입니다.
-(void)viewDidLoad
{
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
[super viewDidLoad];
}
작동하지 않으며 UIWebView가 비어 있습니다. 도움을 주셔서 감사합니다.
NSString을 사용하고 다음과 같이 html 문서를로드하는 것이 좋습니다.
목표 -C
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[webView loadHTMLString:htmlString baseURL: [[NSBundle mainBundle] bundleURL]];
빠른
let htmlFile = NSBundle.mainBundle().pathForResource("fileName", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: NSUTF8StringEncoding)
webView.loadHTMLString(html!, baseURL: nil)
스위프트 3에는 약간의 변화가 있습니다 :
let htmlFile = Bundle.main.path(forResource: "intro", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
webView.loadHTMLString(html!, baseURL: nil)
시도해 보았 니?
또한 pathForResource:ofType:inDirectory
전화로 리소스를 찾았는지 확인하십시오 .
편집 2016년 5월 27일 - loadRequest
노출하는 "보편적 인 크로스 사이트 스크립팅 취약점을 해결합니다." 로드하는 모든 단일 자산을 소유해야합니다. 잘못된 스크립트를로드하면 원하는 것을로드 할 수 있습니다.
로컬로 작업하기 위해 상대 링크가 필요한 경우 다음을 사용하십시오.
NSURL *url = [[NSBundle mainBundle] URLForResource:@"my" withExtension:@"html"];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
번들은 찾을 프로젝트의 모든 하위 디렉토리를 검색합니다 my.html
. (빌드 타임에 디렉토리 구조가 평평 해짐)
my.html
태그가 있으면 <img src="some.png">
webView가 some.png
프로젝트에서 로드 됩니다.
이것에 의해 프로젝트 애셋 (번들)에있는 html 파일을 webView에로드 할 수 있습니다.
UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"test" ofType:@"html"]isDirectory:NO]]];
이것이 당신에게 유용 할 수 있습니다.
나는 당신이 allocate
당신의 webview
첫 번째 를 필요로 하고 초기화 한다고 생각합니다 : :
- (void)viewDidLoad
{
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
webView = [[UIWebView alloc] init];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
[super viewDidLoad];
}
간단한 복사-붙여 넣기 코드 스 니펫 :
-(void)LoadLocalHtmlFile:(NSString *)fileName onWebVu:(UIWebView*)webVu
{
[webVu loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:fileName ofType:@"html"]isDirectory:NO]]];
}
노트 :
html 파일의 Target 멤버쉽 을 확인하십시오. 그렇지 않으면 다음 예외가 발생합니다.
잡히지 않은 예외로 인해 앱 종료
'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'
스위프트 3과 스위프트 4의 경우 :
let htmlFile = Bundle.main.path(forResource: "name_resource", ofType: "html")
let html = try! String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
self.webView.loadHTMLString(html, baseURL: nil)
UIWebView *web=[[UIWebView alloc]initWithFrame:self.view.frame];
//[self.view addSubview:web];
NSString *filePath=[[NSBundle mainBundle]pathForResource:@"browser_demo" ofType:@"html" inDirectory:nil];
[web loadRequest:[NSURLRequest requestWhttp://stackoverflow.com/review/first-postsithURL:[NSURL fileURLWithPath:filePath]]];
동일한 코드가 나를 위해 작동하기 때문에 HTML 파일이 UTF-8 인코딩을 지원하지 않을 수 있습니다.
Or u can also these line of code:
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"Notes For Apple" ofType:@"htm" inDirectory:nil];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[WebView loadHTMLString:htmlString baseURL:nil];
Here the way the working of HTML file with Jquery.
_webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
[self.view addSubview:_webview];
NSString *filePath=[[NSBundle mainBundle]pathForResource:@"jquery" ofType:@"html" inDirectory:nil];
NSLog(@"%@",filePath);
NSString *htmlstring=[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[_webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
or
[_webview loadHTMLString:htmlstring baseURL:nil];
You can use either the requests to call the HTML file in your UIWebview
Make sure "html_files" is a directory in your app's main bundle, and not just a group in Xcode.
A new way to do this using swift. The UIWebView is no more and WKWebView is the new class to load web pages, which ensures the Safari features to the web view.
import WebKit
let preferences = WKPreferences()
preferences.javaScriptCanOpenWindowsAutomatically = false
let configuration = WKWebViewConfiguration()
configuration.preferences = preferences
let webView = WKWebView(frame: self.view.bounds, configuration: configuration)
let request = NSURLRequest(URL: NSURL(string: "http://nshipster.com"))
webView.loadRequest(request)
Swift iOS:
// get server url from the plist directory
var htmlFile = NSBundle.mainBundle().pathForResource("animation_bg", ofType: "html")!
var htmlString = NSString(contentsOfFile: htmlFile, encoding: NSUTF8StringEncoding, error: nil)
self.webView.loadHTMLString(htmlString, baseURL: nil)
[[NSBundle mainBundle] pathForResource:@"marqueeMusic" ofType:@"html"];
It may be late but if the file from pathForResource
is nil
you should add it in the Build Phases > Copy Bundle Resources
.
Here's Swift 3:
if let htmlFile = Bundle.main.path(forResource: "aa", ofType: "html"){
do{
let htmlString = try NSString(contentsOfFile: htmlFile, encoding:String.Encoding.utf8.rawValue )
messageWebView.loadHTMLString(htmlString as String, baseURL: nil)
}
catch _ {
}
}
if let htmlFile = NSBundle.mainBundle().pathForResource("aa", ofType: "html"){
do{
let htmlString = try NSString(contentsOfFile: htmlFile, encoding:NSUTF8StringEncoding )
webView.loadHTMLString(htmlString as String, baseURL: nil)
}
catch _ {
}
}
In Swift 2.0, @user478681's answer might look like this:
let HTMLDocumentPath = NSBundle.mainBundle().pathForResource("index", ofType: "html")
let HTMLString: NSString?
do {
HTMLString = try NSString(contentsOfFile: HTMLDocumentPath!, encoding: NSUTF8StringEncoding)
} catch {
HTMLString = nil
}
myWebView.loadHTMLString(HTMLString as! String, baseURL: nil)
Put all the files (html and resources)in a directory (for my "manual"). Next, drag and drop the directory to XCode, over "Supporting Files". You should check the options "Copy Items if needed" and "Create folder references". Next, write a simple code:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];
Attention to @"manual/index"
, manual is the name of my directory!! It's all!!!! Sorry for my bad english...
=======================================================================
Hola desde Costa Rica. Ponga los archivos (html y demás recursos) en un directorio (en mi caso lo llamé manual), luego, arrastre y suelte en XCode, sobre "Supporting Files". Usted debe seleccionar las opciones "Copy Items if needed" y "Create folder references".
NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];
Presta atención a @"manual/index"
, manual es el nombre de mi directorio!!
참고URL : https://stackoverflow.com/questions/7063276/how-to-load-local-html-file-into-uiwebview
'Programing' 카테고리의 다른 글
SQL Server에서 foreach를 작성하는 방법은 무엇입니까? (0) | 2020.06.01 |
---|---|
ConstraintLayout에서 요소를 가운데에 배치하는 방법 (0) | 2020.05.31 |
저장시 Intellij IDEA Java 클래스가 자동 컴파일되지 않음 (0) | 2020.05.31 |
변수 참조 만 참조로 반환해야합니다-Codeigniter (0) | 2020.05.31 |
혼합 면도기와 자바 스크립트 코드 (0) | 2020.05.31 |