IOS 全屏网页视图
IOS webview in full screen
这确实是一个非常简单的问题,但我对 IOS dev 和 Swift 完全陌生。
我正在尝试添加一个 webview 并使其填满整个屏幕。
这是我的代码
override func viewDidLoad() {
super.viewDidLoad()
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
self.view.addSubview(myWebView)
let url = URL (string: "https://google.com");
let request = URLRequest(url: url! as URL);
myWebView.loadRequest(request);
}
当我 运行 应用程序只出现白屏。我可以将 html 作为字符串加载 (loadHTMLString)
所以 2 个问题
- 如何让 Web 视图获得全屏尺寸?
- 为什么我无法加载 url - 我只得到白屏
您已使用固定的高度和宽度初始化 myWebView 即 300.Try
let frame = self.view.frame
let width = frame.width
let height = frame.height
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: width, height: height))
使用故事板,您可以将 webView 拖放到 viewController 中,并为您的视图设置约束条件(顶部:0,右侧:0,底部:0,左侧:0),以便您的网络视图显示完整屏幕。现在将 webView 的出口扩展到 viewController 和 viewDidLoad.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view
let url = URL (string: "https://www.simplifiedios.net")
let request = URLRequest(url: URL: url!)
webView.loadRequest(request)
}
试试这个。
class ViewController: UIViewController , UIWebViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height))
myWebView.delegate = self
self.view.addSubview(myWebView)
let url = URL (string: "https://google.com");
let request = URLRequest(url: url! as URL);
myWebView.loadRequest(request);
}
func webViewDidStartLoad(_ webView: UIWebView) {
print("web view start loading")
}
func webViewDidFinishLoad(_ webView: UIWebView) {
print("web view load completely")
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
print("web view loading fail : ",error.localizedDescription)
}
}
我运行你的代码没有任何问题。
框架除外
您需要的改变 -
let myWebView:UIWebView = UIWebView(frame: self.view.frame)
如果您无法从 url
加载,请检查您的互联网连接
webView:didFailLoadWithError
实现此功能以检查您以后遇到的任何错误
发生了因为你还没有将 myWebView
添加到 view
。
override func viewDidLoad() {
super.viewDidLoad()
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height))
self.view.addSubview(myWebView)
let request = URLRequest(url: URL(string: "https://google.com")!)
myWebView.loadRequest(request)
}
Hear is your answers of two questions
**1.How do I get the web view to get fullscreen size?**
**Ans**: let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
**2 Why can't I load a url - I only get the white screen**
**Ans**:
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
let url = URL (string: "https://google.com");
let request = URLRequest(url: url! as URL);
myWebView.loadRequest(request)
self.view.addSubview(myWebView)
Load request before adding to self.view like above code
Change your webview size acooridng to your content after finishing your webview loading
//MARK: - WebView Delegate Method
func webViewDidFinishLoad(_ webView: UIWebView) {
var frame = self.webView.frame
frame.size.height = 1
self.webView.frame = frame
let fittingSize = self.webView.sizeThatFits(CGSize.zero)
frame.size = fittingSize
self.webView.needsUpdateConstraints()
self.webView.frame.size.height = fittingSize.height
self.webView.scrollView.isScrollEnabled = false
}
这确实是一个非常简单的问题,但我对 IOS dev 和 Swift 完全陌生。
我正在尝试添加一个 webview 并使其填满整个屏幕。
这是我的代码
override func viewDidLoad() {
super.viewDidLoad()
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
self.view.addSubview(myWebView)
let url = URL (string: "https://google.com");
let request = URLRequest(url: url! as URL);
myWebView.loadRequest(request);
}
当我 运行 应用程序只出现白屏。我可以将 html 作为字符串加载 (loadHTMLString)
所以 2 个问题
- 如何让 Web 视图获得全屏尺寸?
- 为什么我无法加载 url - 我只得到白屏
您已使用固定的高度和宽度初始化 myWebView 即 300.Try
let frame = self.view.frame
let width = frame.width
let height = frame.height
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: width, height: height))
使用故事板,您可以将 webView 拖放到 viewController 中,并为您的视图设置约束条件(顶部:0,右侧:0,底部:0,左侧:0),以便您的网络视图显示完整屏幕。现在将 webView 的出口扩展到 viewController 和 viewDidLoad.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view
let url = URL (string: "https://www.simplifiedios.net")
let request = URLRequest(url: URL: url!)
webView.loadRequest(request)
}
试试这个。
class ViewController: UIViewController , UIWebViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height))
myWebView.delegate = self
self.view.addSubview(myWebView)
let url = URL (string: "https://google.com");
let request = URLRequest(url: url! as URL);
myWebView.loadRequest(request);
}
func webViewDidStartLoad(_ webView: UIWebView) {
print("web view start loading")
}
func webViewDidFinishLoad(_ webView: UIWebView) {
print("web view load completely")
}
func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
print("web view loading fail : ",error.localizedDescription)
}
}
我运行你的代码没有任何问题。
框架除外
您需要的改变 -
let myWebView:UIWebView = UIWebView(frame: self.view.frame)
如果您无法从 url
加载,请检查您的互联网连接webView:didFailLoadWithError
实现此功能以检查您以后遇到的任何错误
发生了因为你还没有将 myWebView
添加到 view
。
override func viewDidLoad() {
super.viewDidLoad()
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height))
self.view.addSubview(myWebView)
let request = URLRequest(url: URL(string: "https://google.com")!)
myWebView.loadRequest(request)
}
Hear is your answers of two questions
**1.How do I get the web view to get fullscreen size?**
**Ans**: let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
**2 Why can't I load a url - I only get the white screen**
**Ans**:
let myWebView:UIWebView = UIWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
let url = URL (string: "https://google.com");
let request = URLRequest(url: url! as URL);
myWebView.loadRequest(request)
self.view.addSubview(myWebView)
Load request before adding to self.view like above code
Change your webview size acooridng to your content after finishing your webview loading
//MARK: - WebView Delegate Method
func webViewDidFinishLoad(_ webView: UIWebView) {
var frame = self.webView.frame
frame.size.height = 1
self.webView.frame = frame
let fittingSize = self.webView.sizeThatFits(CGSize.zero)
frame.size = fittingSize
self.webView.needsUpdateConstraints()
self.webView.frame.size.height = fittingSize.height
self.webView.scrollView.isScrollEnabled = false
}