gpt4 book ai didi

ios - WKWebView具有安全区域的横向内容宽度错误

转载 作者:行者123 更新时间:2023-12-01 16:13:14 25 4
gpt4 key购买 nike

看起来是这样的:
wrong offsets and width
要复制的最大简单代码:

#import "ViewController.h"
#import <WebKit/WebKit.h>

@implementation ViewController

- (void)loadView
{
WKWebView* webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:[[WKWebViewConfiguration alloc] init]];
self.view = webView;

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://apple.com"]]];
}

- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}

@end

这仅在设置了 viewport-fit=cover的网站上发生。如果在Safari中打开相同的网站,则可以看到第一个并条机存在相同的问题,但是此后立即可以正确调整大小。

只有在横向启动时才会发生这种情况。
旋转为纵向并返回横向可解决此问题。即使最小化应用程序并再次打开它也可以解决此问题。

那么,我能通过代码做些什么来强迫自己修复自身?
我已经尝试过将 setNeedsLayoutlayoutIfNeeded调用到整个 WKWebView树。设置滚动条插图将使内容看起来没有设置 viewport-fit=cover
这在iOS 12和13(已测试)和iOS 13 Simulator上发生。

最佳答案

这不是一个完美的解决方案,但是我设法通过将webView作为subView添加到self.view并为Superview添加约束而不是safeArea来解决此问题,从而达到了相同的效果。

解:

  • 将尾随约束连接到变量
  • 将约束isEnabled设置为
    viewDidLoad中为false(用于优化deviceOrientation的检查)
  • 在功能webView(WKWebView,didFinish:WKNavigation)中将约束isEnabled设置为true
  • 不要忘记注册到NavigationView
    @IBOutlet var mainWebView: WKWebView!
    @IBOutlet var trailingConstraint: NSLayoutConstraint!

    override func viewDidLoad() {
    super.viewDidLoad()

    let orientation = UIDevice.current.orientation
    if orientation == .landscapeLeft || orientation == .landscapeRight {
    trailingConstraint.isActive = false
    }

    mainWebView.navigationDelegate = self
    mainWebView.load(URLRequest(url: URL(string: "https://apple.com")!))
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    trailingConstraint.isActive = true
    }
  • 关于ios - WKWebView具有安全区域的横向内容宽度错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59421267/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com