これは今朝早く私を狂わせます。ローカルHTMLをWebビューにロードしたい:
class PrivacyController: UIViewController {
@IBOutlet weak var webView:UIWebView!
override func viewDidLoad() {
let url = NSURL(fileURLWithPath: "privacy.html")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
}
}
Htmlファイルはプロジェクトのルートフォルダーにありますが、グループ内にあります。 Webビューは空白です。何かアイデアは間違っていますか?私はxcode 6.1を使用しており、この例をiPhone 6で実行しています。
アプリケーションリソースのURLを取得するには、URLForResource
クラスのNSBundle
メソッドを使用する必要があります。
スイフト2
let url = NSBundle.mainBundle().URLForResource("privacy", withExtension:"html")
Swift
let url = Bundle.main.url(forResource: "privacy", withExtension: "html")
Swift 3:タイプセーフ
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Adding webView content
do {
guard let filePath = Bundle.main.path(forResource: "myFile", ofType: "html")
else {
// File Error
print ("File reading error")
return
}
let contents = try String(contentsOfFile: filePath, encoding: .utf8)
let baseUrl = URL(fileURLWithPath: filePath)
webView.loadHTMLString(contents as String, baseURL: baseUrl)
}
catch {
print ("File HTML error")
}
}
留意してください:NS = Swiftではありません:]
// Point UIWebView
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
//load a file
var testHTML = NSBundle.mainBundle().pathForResource("privacy", ofType: "html")
var contents = NSString(contentsOfFile: testHTML!, encoding: NSUTF8StringEncoding, error: nil)
var baseUrl = NSURL(fileURLWithPath: testHTML!) //for load css file
webView.loadHTMLString(contents, baseURL: baseUrl)
}
Swift with 3 lines :)
if let url = Bundle.main.url(forResource: "privacy", withExtension: "html") {
webview.loadRequest(URLRequest(url: url))
}
Swiftバージョン2.1
この場合にはエンコードも含まれます
// load HTML String with Encoding
let path = NSBundle.mainBundle().pathForResource("policy", ofType: "html")
do {
let fileHtml = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
webView.loadHTMLString(fileHtml as String, baseURL: nil)
}
catch {
}
ローカルHTMLファイルをプロジェクトに追加し、そのファイルにhome.htmlという名前を付けてから、NSURLオブジェクトを使用してNSURLRequestを作成します。要求をWebビューに渡すと、要求されたURLがWebビューにロードされ、ストーリーボードを使用していない場合は、以下のコードのように、uiwebviewをView Controllerビューに追加します。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let localfilePath = NSBundle.mainBundle().URLForResource("home", withExtension: "html");
let myRequest = NSURLRequest(URL: localfilePath!);
myWebView.loadRequest(myRequest);
self.view.addSubview(myWebView)
}
詳細については、こちらを参照してください http://sourcefreeze.com/uiwebview-example-using-Swift-in-ios/
これは私のために働いています:
@IBOutlet weak var mWebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
mWebView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("fineName", ofType: "html")!)))
}
info.plistファイルにDictionary
タイプのApp Transport Security Settings
を追加しました。タイプBoolean
および値YES
のApp Transport Security SettingsのサブキーAllow Arbitrary Loads
も追加されました。
ここ はチュートリアルです。
編集済み
Swift 3(Xcode 8)の場合
mWebView.loadRequest(URLRequest(url: URL(fileURLWithPath: Bundle.main.path(forResource: "test/index", ofType: "html")!)))
UIWebViewでhtml文字列またはローカルhtmlファイルをロードできます。
HTML文字列:
func loadHtmlCode() {
let htmlCode = "<html><head><title>Wonderful web</title></head> <body><p>wonderful web. loading html code in <strong>UIWebView</strong></></body>"
webView.loadHTMLString(htmlCode, baseURL: nil)
}
HTMLファイル:
func loadHtmlFile() {
let url = NSBundle.mainBundle().URLForResource("contactus", withExtension:"html")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
}
詳細はここにあります: http://webindream.com/load-html-uiwebview-using-Swift/
Swiftの場合3これを使用します。
do
{
let testHTML = Bundle.main.path(forResource: "about", ofType: "html")
let contents = try NSString(contentsOfFile: testHTML!, encoding: String.Encoding.utf8.rawValue)
let baseUrl = NSURL(fileURLWithPath: testHTML!) //for load css file
mWebView.loadHTMLString(contents as String, baseURL: baseUrl as URL)
}
catch
{
}
これは私のために働いた(Xcode 8、Swift 3)
@IBOutlet weak var webViewer:UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let localfilePath = Bundle.main.url(forResource: "homeInfo", withExtension: "html");
let myRequest = NSURLRequest(url: localfilePath!);
webViewer.loadRequest(myRequest as URLRequest);
self.view.addSubview(webViewer)
}
Swift 4.2、Xcode 10.1、WKWebViewはファイルからHTMLをロードします。 UIWebViewは非推奨です。
IOS 8以降で実行されるアプリでは、UIWebViewを使用する代わりにWKWebViewクラスを使用します。
import WebKit
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let localFilePath = Bundle.main.url(forResource: "document_terms_of_use", withExtension: "html")
let request = NSURLRequest(url: localFilePath!)
webView.load(request as URLRequest)
}
Swift 4.2および5:
let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 1024, height: 768))
let url = URL(string: PERS_Path)
webView?.navigationDelegate = self
webView?.uiDelegate = self
webView!.loadFileURL(url!, allowingReadAccessTo: url!)
self.view. addSubview(webView)
これを追加することを忘れないでくださいWKNavigationDelegate, WKUIDelegate