2016-06-26 20 views
6

Im bắt đầu bằng một ứng dụng đơn giản chỉ hiển thị chế độ xem web bằng WKWebView. Mọi thứ đều được xây dựng và hoạt động tốt, ngoại trừ việc nó luôn luôn là toàn màn hình. Lý tưởng nhất là nó sẽ không mở rộng dưới thanh trạng thái iOS ở trên cùng. Nó cần phải được hạ xuống 20px để ở dưới nó. Tôi đã tìm kiếm rộng rãi cho một giải pháp nhưng không có gì thay đổi kích thước. Không có gì được thiết lập trong InterfaceBuilder, tôi đang làm mọi thứ theo chương trình. Sử dụng Swift.Cố gắng tạo một WKWebView trên iOS với kích thước nhỏ hơn màn hình lập trình

Điều này có vẻ giống như một điều cơ bản mà nhiều ứng dụng có WKWebView sẽ thực hiện. Nó phải đơn giản. Tôi có thể thiếu một cái gì đó hiển nhiên. Bất kỳ trợ giúp được đánh giá cao. Cảm ơn trước.

Đây là những gì tôi có cho đến nay:

import UIKit 
import WebKit 
class ViewController: UIViewController, UIGestureRecognizerDelegate , UIWebViewDelegate, WKNavigationDelegate { 

    let url = NSURL(string:"http://stackoverflow.com") 
    var webView: WKWebView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     webView = WKWebView(frame: CGRect(x: 0, y: 20, width: 380, height: 150), configuration: WKWebViewConfiguration()) 
     self.view = webView 
     self.view.frame = webView.frame 
     let req = NSURLRequest(URL:url!) 
     webView.loadRequest(req) 
     self.webView.allowsBackForwardNavigationGestures = true 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

Rất cám ơn Emilio !! Mã điều chỉnh hoạt động hoàn hảo!

import UIKit 
import WebKit 
class ViewController: UIViewController, UIGestureRecognizerDelegate , UIWebViewDelegate, WKNavigationDelegate { 

    let url = NSURL(string:"http://stackoverflow.com") 
    var webView: WKWebView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     webView = WKWebView(frame: CGRect(x: 0, y: 20, width: self.view.frame.width, height: self.view.frame.height - 20), configuration: WKWebViewConfiguration()) 
     self.view.addSubview(webView) 
     let req = NSURLRequest(URL:url!) 
     webView.loadRequest(req) 
     self.webView.allowsBackForwardNavigationGestures = true 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

Trả lời

3

Vấn đề của bạn là UIViewControllers được trình bày theo những cách nhất định sẽ quản lý khung chế độ xem của họ. Nếu bạn trình bày nó một cách bình thường, như bộ điều khiển gốc, hoặc trong thanh điều hướng, ví dụ, thiết lập danh tiếng theo cách thủ công sẽ không có hiệu lực. (Đó chỉ là một vài ví dụ).

Nếu bạn muốn quản lý khung của chế độ xem, bạn có thể thêm webView làm chế độ xem phụ vào bộ điều khiển chế độ xem của bạn view. Sửa đổi khung hình của nó sẽ hoạt động sau đó.

Một điều tôi muốn chỉ ra là kêu gọi self.view.frame = webView.frame sau khi gọi self.view = webView là không cần thiết, vì cả hai đều cùng một đối tượng, vì vậy những gì bạn đang làm có hiệu quả là:

self.view.frame = self.view.frame 
Các vấn đề liên quan