首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WKWebView高度更改

WKWebView是苹果公司推出的一种用于iOS应用程序中显示网页内容的组件。它是基于WebKit引擎的一部分,提供了更好的性能和功能,相比于UIWebView有更多的优势。

WKWebView的高度更改是指在iOS应用程序中动态改变WKWebView的高度。这在一些场景中非常有用,比如当网页内容的高度发生变化时,可以根据实际内容的高度来调整WKWebView的高度,以确保内容的完整显示。

实现WKWebView高度更改的一种常见方法是使用WKWebView的scrollView的contentSize属性。contentSize属性表示WKWebView内容的大小,包括宽度和高度。通过监听contentSize的变化,可以在内容发生变化时动态调整WKWebView的高度。

具体实现步骤如下:

  1. 创建一个WKWebView实例,并设置其frame。
  2. 监听WKWebView的scrollView的contentSize属性的变化。
  3. 在contentSize变化的回调方法中,根据新的contentSize来调整WKWebView的高度。
  4. 更新WKWebView的frame,使其高度与新的高度一致。

以下是一个示例代码:

代码语言:txt
复制
import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建WKWebView实例
        webView = WKWebView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height))
        webView.navigationDelegate = self
        view.addSubview(webView)
        
        // 加载网页内容
        let url = URL(string: "https://www.example.com")
        let request = URLRequest(url: url!)
        webView.load(request)
        
        // 监听contentSize变化
        webView.scrollView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil)
    }
    
    // contentSize变化的回调方法
    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "contentSize" {
            // 根据新的contentSize调整WKWebView的高度
            let newContentSize = webView.scrollView.contentSize
            webView.frame.size.height = newContentSize.height
        }
    }
    
    // WKNavigationDelegate方法
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        // 网页加载完成后,更新WKWebView的高度
        let contentSize = webView.scrollView.contentSize
        webView.frame.size.height = contentSize.height
    }
}

推荐的腾讯云相关产品:腾讯云移动浏览器网页容器服务(Tencent X5),它是腾讯云提供的一种用于移动应用程序中显示网页内容的解决方案。Tencent X5基于腾讯浏览服务(TBS)内核,提供了更好的性能和功能,可以替代WKWebView和UIWebView。您可以通过以下链接了解更多关于腾讯云移动浏览器网页容器服务的信息:腾讯云移动浏览器网页容器服务

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WKWebView

UIWebView自iOS2就有,WKWebView从iOS8.0(2014年9月WWDC)才有,毫无疑问,WKWebView相对UIWebVIew要优秀得多,主要表现在以下几点: 1,WKWebView...但WKWebView的内存超过系统分配给它的内存的时候,WKWebView浏览器就会崩溃白屏,但是APP不会crash(APP会收到系统通知,并且尝试去重新加载页面)。...以上介绍了WKWebView的优点,但是其也有以下缺点: 1,WKWebView需要iOS9及更高的版本,虽然WKWebView是在iOS8之后引入的,但是iOS8的版本存在重大限制,比如无法访问本地存储的文件...WKWebView的用法 ? WKWebView API WKWebView对象可以显示交互式Web内容,例如应用内浏览器。你可以使用WKWebView类将web内容嵌入到你的应用程序中。...WKWebViewConfiguration仅在首次初始化WebView视图的时候使用,当WebView视图被创建以后,你就无法再使用此类来更改WebView的配置信息了。

6K20

WKWebView详解

WKWebView主要涉及到以下类或协议,各部分可能互相依赖,文章按照apple文档的划分对每一个模块进行了详细的解释 WKWebView 配置和偏好 WKWebViewConfiguration WKPreferences...一个WKWebView对象显示交互式的web内容,比如在应用程序内的浏览器。...您可以使用WKWebView类来在应用程序中嵌入web内容,通过创建一个WKWebView对象,将其设置为视图,并发送一个请求来加载web内容。...作为应用内浏览器,那么进行这种更改是最佳选择 SFSafariViewController自动支持链接预览 iOS 10.0+开始支持自定义链接预览,你也可以通过这种方式来实现用户预览网页并pop后仍然留在应用内而不用切换到...时的窗口的可选属性 窗口是否可以调整尺寸(Boolean) @property(nonatomic, readonly) NSNumber *allowsResizing; nil表示未被指定该属性 窗口的高度

20.4K193

WKWebView 那些坑

1、WKWebView白屏问题 WKWebView自诩拥有更快的加载速度,更低的内存占用,但实际上WKWebView是一个多进程组件,Network Loading以及UI Rendering在其它进程中执行...2、WKWebView Cookie问题 Cookie问题是目前WKWebView的一大短板 2.1、WKWebView Cookie存储 业界普遍认为WKWebView拥有自己的私有存储,不会将Cookie...; 5、WKWebView 页面样式问题 在WKWebView适配过程中,我们发现部分H5页面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5页面高度值异常导致: a....同学通过获取window.innerHeight来设置页面高度,导致页面整体被拉伸。...尽管苹果对WKWebView的开发进度过于缓慢,但相信WKWebView才是未来。—>iOS 11 WKWebView 新特性

17.1K21

WKWebView 那些坑

1、WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering...2、WKWebView Cookie 问题 Cookie 问题是目前 WKWebView 的一大短板 2.1、WKWebView Cookie存储 业界普遍认为 WKWebView 拥有自己的私有存储,...; 5、WKWebView 页面样式问题 在 WKWebView 适配过程中,我们发现部分H5页面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5页面高度值异常导致: a....),而H5同学通过获取window.innerHeight来设置页面高度,导致页面整体被拉伸。...虽然 WKWebView 坑比较多,但是相对 UIWebView 在内存消耗、稳定性方面还是有很大的优势。尽管苹果对 WKWebView 的开发进度过于缓慢,但相信 WKWebView 才是未来。

4.5K130

WKWebView 白屏问题

1、WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。...初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会增加。...在一些用 webGL 渲染的复杂页面,使用 WKWebView 总体的内存占用(App Process Memory + Other Process Memory)不见得比 UIWebView 少很多。...在 WKWebView 中加载下面的测试链接可以稳定重现白屏现象: http://people.mozilla.org/~rnewman/fennec/mem.html 这个时候 WKWebView.URL...在WKWebView白屏的时候,另一种现象是 webView.titile 会被置空, 因此,可以在 viewWillAppear 的时候检测 webView.title 是否为空来 reload 页面

4.4K20

​# iOS WKWebView适配(基础篇)

一、初始化 1.initWithFrame:configuration self.wkWebView = [[WKWebView alloc] initWithFrame:frame configuration...:[self _defaultConfiguration]]; 2.WKWebViewConfiguration类说明 wkwebview初始化时的参数配置 websiteDataStore wkwebview...属性 监听wkwebview整个生命周期的代理方法,详细见"二、生命周期方法" 二、生命周期方法(WKNavigationDelegate) 1.请求前决定是否要跳转 用户点击网页上的链接,打开新页面时...为了兼容iOS8的js通信,也可以在这里拦截url做bridge分发 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...(WKNavigationActionPolicyCancel); } } 2.页面开始请求 正式发送请求前的回调,无法拦截,可以在这个点注入一些自己的js - (void)webView:(WKWebView

3.7K30

iOS WKWebView+UITableView混排

WKWebView+UITableView混排 做内容展示页的时候,经常会用到WKWebView+UITableView的混排功能,现在此做一个总结,该功能的实现我采用了四种方法。...tableView的最大高度为屏幕高度,当内容不足一屏时,高度为内容高度。 方案3(推荐): webView作为tableView的Header, 但不撑开webView。...webView的最大高度为屏幕高度,当内容不足一屏时,高度为内容高度。和方案2类似,但是不需要插入占位Div。...的使用、WKWebView+UITableView混排、UIScrollView实现原理、WKWebView离线缓存功能 等更多内容都在 https://github.com/wsl2ls/iOS_Tips...和AudioToolBox音视频编解码 8、OpenGL ES学习 9、LeetCode算法练习 10、键盘和UIMenuController的并存问题 11、iOS Crash防护 12、WKWebView

1.7K30
领券