- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我目前正在开发一个应用程序,它使用 UIWebView
来显示一些内容。它过去与 UIWebView
一起工作得很好,但是当我们将操作系统要求提高到 8.1 时,我们决定切换到 WKWebView
。我们注意到性能有了巨大的提高,但一些简单的想法过去工作得很好,现在开始失败了。经过一些研究,我设法看到发生了什么 - 但我不知道如何解决它。我想知道是否有人可以帮我解决这个问题......
我们的 webview 加载 URL 需要花费大量时间才能完成这项工作,因此在开始请求之前,我们加载一个静态微调器,这样用户就不会觉得应用程序已经疯了。该静态内容的加载周期已经调整好,因此在正确加载静态内容之前我们不会启动 URL 请求。只要用户不旋转设备,这就可以正常工作。这是可以看到的:
(出于隐私目的,我不得不更改 View 。毕竟我不是此代码的所有者:-))
我正在使用此 html 代码来测试大小。 body 的背景颜色是深灰色,丑陋的浅灰色框扩展到宽度的 100%,减去边距。到目前为止,一切都很好。但是如果用户旋转设备,就会发生这种情况:
这很令人毛骨悚然,因为显然 body 正在拉伸(stretch)以匹配最大宽度,但内部 div 正在处理错误的相对大小。只要正在处理请求,这种情况就会继续。当我强制超时使请求失败时,WKWebView
重新呈现并显示其正确外观:
一旦我发现这一点,我尝试订阅旋转观察器并通过以下方式在 webview 上强制重新呈现,但没有成功:
UIWebView
和 UIScrollView
调用 viewNeedsDisplay
UIWebView
UIScrollView
内容到目前为止,我的结论是:
UIWebView
上,只是发生在新的 WKWebView
上(我再次测试,确认)WKWebView
在加载状态下无法正确呈现 View 有人知道是否有办法解决这个问题吗?像我缺少的一种默认情况下禁用的神奇属性?我不想认为他们在重新制作 webview 时破坏了这部分......在此先感谢 :)
编辑:自创建帖子以来我尝试过的东西,但没有成功:
dispatch_async
方法在不同的线程中调用 http 请求不起作用。在幕后,WKWebview
可能最终使用同一个线程,就像您从主线程调用它一样。最佳答案
如果您不介意有点 hacky,可以使用 Javascript 来实现:
您可以添加检测更改的 Javascript,例如 window.orientation
和 window.onresize
.查看是否调用了任何与帧相关的事件。如果它们被调用,只需使用 Javascript 自己调整 div 的大小。
如果事件永远不会触发,您可以使用 evaluateJavaScript:completionHandler: 自己伪造它们
您也可以用这种方式举办自己的事件。每当您在应用中检测到设备方向发生变化时,只需发送调整大小的 div 脚本即可。
如果您正在加载 Javascript,您可以查看 async
和 defer
的 <script>
标签。这意味着您将不得不更改 WebView 中的代码。
这不是解决此问题的最佳方法,但它需要的更改最少。
我还建议您在 https://bugreport.apple.com/ 填写错误报告, 这样您就可以知道这是否是预期的行为。
关于ios - WKWebView 在加载另一个 URL 时不会重新呈现内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30034653/
我遇到了死胡同。我只是想不出在用户关闭应用程序后恢复 WKWebView 的方法。当他重新打开它时,他访问过的所有网页都必须在那里。 有什么建议吗? 最佳答案 All the web pages he
有没有办法让 WKWebView 加载完整的 URL对于每个请求? webView:didFinishNavigation: 仅适用于 mainFrame导航并且不提供 URL 请求参数。 我如何获得
我想复制 Facebook 应用程序的行为,当您单击外部链接时,它会在新浏览器中打开(但它不在 Safari 中)。 我目前有一个加载我的网站的 WKWebView。我可以在点击事件中捕获用户并打开它
我正在尝试将所有加载的数据从一个 WKWebView 复制到一个新的 WKWebView 以便在新的 webView 加载时加载所有内容提出了。关于如何执行此操作或对此的最佳方法有何建议? 最佳答案
WKWebView 允许您通过 Safari 打开外部链接(与基本 url 不同的链接)。 但是,有时您想打开 WKWebView 本身内的所有链接. 例如,假设您有一个基本网址 "https://t
我已经发布了我使用的委托(delegate)方法,如果没有按钮操作事件,我如何使用 javascript 添加该事件。我如何在我的 View Controller 中使用功能主义者。 func web
我正在制作一个应用程序,用户可以在其中单击一个按钮以禁用所有 JavaScript 在下一个页面加载时(而不是重新启动应用程序才能生效)。我尝试了以下代码,但首选项没有保存。 JavaScript 在
我知道我们可以初始化一个 UIWebView 或 WKWebView 然后注入(inject) JavaScript 来获取 navigator.userAgent 的值,但是这需要初始化UIWebV
目标:网站加载完成后对WKWebView进行截图 采用的方法: 在 UIViewController 中定义了一个 WKWebView 变量 创建了一个名为 screen capture() 的扩展方
服务人员在 WKWebView 中可用在 iOS 11.3 测试版中,但似乎在 iOS 11.3 的最终 GM 版本中不可用。 有谁知道如何在 WKWebView 中重新启用 Service Work
我有 44 个 UIButtons,每个按钮都应该连接到带有本地 html 的 wkwebview 的 vc。 有没有办法在一个 vc 中实现所有 44 个按钮? 这是 wkwebview 示例 vc
我正在尝试在 App WebView 中实现“真正的”全屏,这意味着无论如何我都希望网页内容完全显示在屏幕下方。 这是我面临的当前情况,当将 WebView 构建到 superviews 边界时: 红
我正在尝试使用带有单个按钮的简单 WKWebView,单击该按钮后应通过 JavaScript 回调到 Swift。但是,我在 Xcode 控制台中看到以下日志,并且 View 加载了空的 WKWeb
我正在尝试使用带有单个按钮的简单 WKWebView,单击该按钮后应通过 JavaScript 回调到 Swift。但是,我在 Xcode 控制台中看到以下日志,并且 View 加载了空的 WKWeb
我正在使用一个 MacOS 应用程序,它需要使用 WKUserScript 功能将消息从网页发送回 MacOS 应用程序。我正在处理文章 https://medium.com/capital-one-
对于UIWebView,我们可以通过以下方式获取内容高度: [webView stringByEvaluatingJavaScriptFromString:@"document.body.offset
优化背景 众所周知,H5 的部分优势(开发快,迭代快,热更新)是很明显的,公司客户端的部分业务都是由 H5 来实现的,网络好的情况下体验也是很不错的 但是其实 H5 的体验是比原生
由于Xcode8发布之后,编译器开始不支持iOS 7了,这样我们的app也改为最低支持iOS 8.0,既然需要与web交互,那自然也就选择使用了 iOS 8.0之后 才推出的新控件 WKWebVie
下图中的这个“up up up up”是使用wkwebview加载的html字符串 webView?.loadHTMLString((currentLock?.text)!, baseURL: nil
我的应用程序有 1 个 ViewController,它加载一个使用 Auth0 处理登录的网络应用程序 url。在 iOS 13.3 中,webView 已停止在登录后加载其他页面。 但是,当我尝试
我是一名优秀的程序员,十分优秀!