로컬 html 파일을 UI WebView에 로드하는 방법
UI Web View에 html 파일을 로드하려고 하는데 작동하지 않습니다.다음은 무대입니다.프로젝트에 html_files라는 폴더가 있습니다.그런 다음 인터페이스 빌더에서 webView를 만들고 viewController에서 webView에 콘센트를 할당했습니다.다음은 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];
}
그러면 작동하지 않고 UI Web View가 비어 있습니다.도와주시면 감사하겠습니다.
아마도 다음과 같이 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)
Swift 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
불러.
EDIT 2016-05-27 - "범용 사이트 간 스크립팅 취약성"이 노출됩니다.로드하는 모든 자산을 소유하고 있는지 확인합니다.잘못된 스크립트를 로드하면 원하는 모든 스크립트를 로드할 수 있습니다.
로컬에서 작업하기 위해 상대 링크가 필요한 경우 다음을 사용하십시오.
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 membership이 체크되어 있는지 확인합니다.그렇지 않으면 예외가 느려집니다:-
캡처되지 않은 예외로 인해 앱을 종료하는 중
'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter'
Swift 3 및 Swift 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 인코딩을 지원하지 않을 것입니다. 왜냐하면 같은 코드가 나에게 작동하기 때문입니다.
또는 다음과 같은 코드 행을 사용할 수도 있습니다.
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];
여기에서는 Jquery를 사용한HTML 파일의 조작 방법을 나타냅니다.
_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];
UI Webview에서 HTML 파일을 호출하는 요청 중 하나를 사용할 수 있습니다.
"html_files"가 Xcode의 그룹이 아니라 앱의 메인 번들에 있는 디렉토리인지 확인하십시오.
swift를 사용하여 이를 수행하는 새로운 방법입니다.UI Web View가 없어지고 WK Web View는 웹 페이지를 로드하는 새로운 클래스입니다.이것에 의해, Safari 기능이 Web 뷰에 확실히 표시됩니다.
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)
다음은 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 _ {
}
}
[[NSBundle mainBundle] pathForResource:@"marqueeMusic" ofType:@"html"];
늦어질 수도 있지만, 만약 그 파일이pathForResource
이nil
에 추가해야 합니다.Build Phases > Copy Bundle Resources
.
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 _ {
}
}
Swift 2.0에서는 @user478681의 대답은 다음과 같습니다.
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)
모든 파일(html 및 리소스)을 디렉토리에 저장합니다('수동'용).다음으로 디렉토리를 XCode로 드래그 앤 드롭하여 "Supporting Files" 위에 놓습니다.필요한 경우 항목 복사 및 폴더 참조 작성 옵션을 선택해야 합니다.다음으로 간단한 코드를 작성합니다.
NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];
「 」에 .@"manual/index"
, manual은 내 디렉토리 이름입니다!!다!!!영어가 서툴러서 미안해...
=======================================================================
코스타리카의 홀라 데스 데 코스타리카Ponga los archivos(html y demas recurcos) un directorio(en mi caso llamé 매뉴얼), luego, arrastre y suelte en XCode, "지원 파일" 참조.Usted de be selectocionar las opciones "필요한 경우 항목 복사" y "폴더 참조 작성"
NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];
어@"manual/index"
, manual es el nombre de mi directoryio!!
프로젝트가 커지면 HTML 페이지가 하위 폴더에 있는 파일을 참조할 수 있도록 구조가 필요할 수 있습니다.
html_files
폴더를 Xcode로 설정하고 폴더 참조 작성 옵션을 선택합니다.다음 Swift 코드는 다음 코드를 통해WKWebView
는, 의 폴더구조도 하고 있습니다.
import WebKit
@IBOutlet weak var webView: WKWebView!
if let path = Bundle.main.path(forResource: "sample", ofType: "html", inDirectory: "html_files") {
webView.load( URLRequest(url: URL(fileURLWithPath: path)) )
}
, 만약에 이, 이, 이 이, 이, 이, 이, 이, 이, 이, 이, 이, 이, 이,sample.html
에 「」가 되어 있습니다.<img src="subfolder/myimage.jpg">
후 파일 "" " " " " " " "myimage.jpg
subfolder
또한 로드되어 표시됩니다.
크레딧 : https://stackoverflow.com/a/8436281/4769344
언급URL : https://stackoverflow.com/questions/7063276/how-to-load-local-html-file-into-uiwebview
'programing' 카테고리의 다른 글
기다림과 수면의 차이 (0) | 2023.04.20 |
---|---|
WPF: DockPanel에서 중간 아이를 스트레칭하려면 어떻게 해야 하나요? (0) | 2023.04.20 |
명령 프롬프트에서 공백을 사용하려면 어떻게 해야 합니까? (0) | 2023.04.15 |
긴 형식의 printf 변환 지정자는 무엇입니까? (0) | 2023.04.15 |
Bash에서 변수에 유전 값을 할당하려면 어떻게 해야 합니까? (0) | 2023.04.15 |