如何获得具有相同屏幕宽度的 Web 视图?

Posted

技术标签:

【中文标题】如何获得具有相同屏幕宽度的 Web 视图?【英文标题】:How to have a web view with the same width of screen? 【发布时间】:2018-09-01 06:54:32 【问题描述】:

我想在 Web 视图中显示离线 html。我希望网络视图高度与视图高度相同(它应该涵盖屏幕宽度)。它的高度与内容高度相同。我应该如何更改initWithFrame

- (void)viewDidLoad 
    [super viewDidLoad];

    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 400, 400)];

    NSString *htmlTxt = [[NSUserDefaults standardUserDefaults]
                                      stringForKey:@"HTML"];
    [webView loadHTMLString: htmlTxt baseURL:nil];
    [self.view addSubview:webView];

【问题讨论】:

【参考方案1】:

1- 使用 WKWebView,因为 UIWebView 已弃用

2-

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame];

3- 内部

- (void)webViewDidFinishLoad:(UIWebView *)webView 
  webview.frame = CGRectMake(0.0, 0.0,self.view.frame.size.width,webview.contentSize.height);

【讨论】:

【参考方案2】:

如果您的应用支持 ios 8+,请使用 WKWebView 而不是 UIWebView,因为它已被弃用。

WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
webView.navigationDelegate = self;

【讨论】:

【参考方案3】:

是的,你应该使用@SH_Khan 提到的 WKWebView

如果您使用自动布局/约束,这里是相同的 Swift 代码

import WebKit

override func viewDidLoad() 
    super.viewDidLoad()
    //let webView = UIWebView(frame: CGRect.zero)
    let webView = WKWebView(frame: CGRect.zero)

    webView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(webView)
    view.bringSubviewToFront(webView)

    webView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    webView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    webView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    webView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

    if let htmlTxt = UserDefaults.standard.string(forKey: "HTML") 
        webView.loadHTMLString(htmlTxt, baseURL: nil)
    

【讨论】:

以上是关于如何获得具有相同屏幕宽度的 Web 视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使多个视图具有相同的宽度?

我希望两个按钮具有相同的宽度并使用自动布局从屏幕顶部按比例在所有屏幕尺寸中定位自己?

在滚动视图中具有相同宽度和高度的三个 UIButton 上的自动布局

给定具有多行标签的集合视图单元格的宽度,如何获得首选的 AutoLayout 高度?

使用自动布局使任何视图的宽度等于屏幕宽度

在纵向和横向模式下获得相同的屏幕宽度和高度