UIWebView动态内容大小

2024-02-20

我环顾四周,没有看到任何快速相关的方法来做到这一点。我试图让我的 UIWebViews 高度是动态的。我有一个使用 loadHtmlString 函数加载数据的 UIWebView。问题是我从 sqlite 数据库加载数据,每次加载不同长度的不同字符串,自然 Web 视图会获得不同的高度。
现在我需要知道如何使 UIWebView 达到精确的高度,以便在 webView 下加载下一个内容。这就是我到目前为止所拥有的

var jobSkillView = UIWebView(frame: CGRectMake(-5, 480.0, screenWidth, 300.0))
jobSkillView.loadHTMLString("<html><body p style='font-family:arial;font-size:16px;'>" + jobSkills + "</body></html>", baseURL: nil)
jobSkillView.stringByEvaluatingJavaScriptFromString("document.body.innerHTML")
jobSkillView.scrollView.scrollEnabled = true
jobSkillView.scrollView.bounces = true
jobSkillView.sizeToFit()
border.addSubview(jobSkillView)

我在 SO 上发现了类似的东西,但不知道如何将其链接到UIWebView的框架:

func webViewDidFinishLoad(jobSkillView : UIWebView){
    // Change the height dynamically of the UIWebView to match the html content
    var jobSkillViewFrame: CGRect = jobSkillView.frame
    jobSkillViewFrame.size.height = 1
    jobSkillView.frame = jobSkillViewFrame
    var fittingSize: CGSize = (jobSkillView.sizeThatFits(CGSizeZero))
    jobSkillViewFrame.size = fittingSize
    // webViewFrame.size.width = 276; Making sure that the webView doesn't get wider than 276 px
    jobSkillView.frame = jobSkillViewFrame
    var jobSkillViewHeight = jobSkillView.frame.size.height
}

这篇文章已针对 Swift 5 进行了更新 &WKWebView


所以这是你在那里写的一个非常好的函数,OP!
这是代码的更短、更优雅的版本:

// make sure to declare the delegate when creating your webView (add UIWebViewDelegate to class declaration as well)
myWebView.delegate = self

func webViewDidFinishLoad(webView: UIWebView) {
     webView.frame.size.height = 1
     webView.frame.size = webView.sizeThatFits(CGSize.zero)
}

迁移至WKWebView

1)导入WebKit
2)让你的ViewController继承自WKNavigationDelegate
3)连接WKWebView的代表:webView.navigationDelegate = self
4)实现以下协议功能:

webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)

迁移后从UIWebView to WKWebView,上面的方法似乎不再起作用了。
相反,你可以做的是改变线路webView.sizeThatFits(CGSize.zero) to:

webView.frame.size = webView.scrollView.contentSize

完整代码为WKWebView那么将是:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    webView.frame.size.height = 1
    webView.frame.size = webView.scrollView.contentSize
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIWebView动态内容大小 的相关文章

  • NSPredicate 的 onFormat 字符串

    我想用 id 键对数据进行排序 我如何理解格式字符串的用途NSPredicate格式 我有一个100号的帖子 我的代码 let objectIDs posts map 0 id let predicate NSPredicate forma
  • 在 swift 中获取 NSImage 的 PNG 表示

    嘿 我在获取 NSImage 对象的 PNG 表示时遇到了一些问题 这就是我正在做的 var imgData NSData coverImgView image TIFFRepresentation var bitmap NSBitmapI
  • 快速将阴影绘制到 uibezierpath

    我有一个奇怪的问题 尽管我确实阅读了很多有关如何执行此操作的教程 但最终结果仅显示贝塞尔线 而不显示任何阴影 我的代码非常简单 let borderLine UIBezierPath borderLine moveToPoint CGPoi
  • 如何在 UITableViewCell 上使用自定义初始值设定项?

    我有一个自定义 UITableViewCell 我想在我的表视图中使用它 这是我的单元格代码 class ReflectionCell UITableViewCell IBOutlet weak var header UILabel IBO
  • AudioPlayer 和锁屏/控制中心控制 Swift [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我是斯威夫特的新手 我写信是因为我想问一个问题 我和我的朋友正在开发一个音频播放器 但我们遇到了问题 播放器还可以在后台
  • 在 Firebase 和 Swift 3 中注册之前如何验证用户名是否存在?

    我整合了五个视图控制器的注册流程 而不是一个用于 Firebase 注册的中央 VC 通常情况下 在注册之前会出现数据丢失的问题 但我会以编程方式将所有输入的值通过 segue 推送到最终确认页面 并将数据发送到 Firebase 最终进行
  • 快速重写函数错误

    我有一个结构 struct ErrorResultType ErrorType var description String var code Int 和一个协议 protocol XProtocol func dealError erro
  • 为什么我的自定义类没有出现在 Interface Builder 的下拉列表中?

    我正在使用 Interface Builder 和 Storyboards 来构建我的应用程序 我正在尝试将我的源代码连接到我的UIViewController在 Storyboard 中 但我的类都没有显示在 自定义类 下拉菜单中 这种情
  • 导航栏隐藏在 SwiftUI 中不起作用

    我有三观 我想隐藏第三个视图中的导航栏 即使我给 navigationBarHidden true 导航栏正在显示 我找不到我哪里做错了 我已在下面附上我的代码和生成的屏幕截图 Xcode 版本 11 1 struct ContentVie
  • 如何使用 swift 在 UITabBarController 中以编程方式添加选项卡?

    如何以编程方式从 UIViewController 扩展的任何类创建选项卡 class DashboardTabBarController UITabBarController override func viewDidLoad here
  • 在 WidgetKit 中每分钟更新时间文本标签

    是否可以在小部件中创建显示当前时间并实时更新的文本标签 尝试创建时钟小部件 但小部件每 5 分钟仅更新 1 次 创建时间表没有帮助 使小部件保持最新 不适用于当前时间 仅适用于计时器等 一个可能的解决方案是使用time日期样式 A styl
  • iOS 9 中可滑动的表格视图单元格

    我希望我的表格列表具有像 iOS 8 中那样的可滑动菜单 首次在 iOS 7 中引入 我找到了清晰的 Ray Wenderlich 指南 http www raywenderlich com 62435 make swipeable tab
  • 如何跟踪 SwiftUI 应用程序中的所有触摸

    我正在尝试在 SwiftUI 应用程序中实现锁屏 我需要跟踪每个事件才能重新启动锁定计时器 在 UIKit 应用程序中 我使用了这种方法 重写 UIApplication 它允许了解应用程序中的任何事件 override func send
  • Swift UI 导出画布内容

    我有一个画布 用户可以在上面画东西 我想导出用户在画布上绘制的任何内容 并且我正在使用以下扩展从视图中获取图像 extension View func snapshot gt UIImage let controller UIHosting
  • Swift 结构类型集

    说我有一个struct 可以是任何东西 struct Cube var x Int var y Int var z Int var width Int 然后我该如何创建一个Set这些点中 是否存在两个具有相同属性的对象 let points
  • 是否可以对 UILabel 的文本颜色变化进行动画处理? [复制]

    这个问题在这里已经有答案了 UIView animateWithDuration 5 animations myLabel textColor UIColor redColor 标签文本颜色立即改变 Try this UIView tran
  • 在 Safari 中快速打开链接

    我目前正在我的应用程序中打开链接WebView 但我正在寻找一个打开链接的选项Safari反而 它不是 融入 Swift 但你可以使用标准UIKit方法来做到这一点 看看 UIApplication 的openUrl https devel
  • 重新组织链式可观察量

    我有一大块链接的 Rx 可观察量 当通过选择表视图行时会触发这些可观察量table rx modelSelected 我希望能够打破这个逻辑 因为我目前必须在flatMapLatest 因为这是流程的 第一步 感觉不对 我必须在后续执行更多
  • 如何将 SCNPlane 颜色更改为透明颜色

    我正在开发一个 ARKit 项目 在水平面上点击时需要波纹动画效果 为此 我采用了 UIView 对象并将其作为 SCNPlane 对象材料的内容传递 我已将波纹动画添加到 UIView 对象 一切正常 但我无法将 SCNPlane 颜色更
  • 在 UIWebView 中禁用复制和粘贴

    几乎 我已经尝试了一切方法来禁用复制 粘贴UIWebView但对我来说没有任何作用 我正在加载我的UIWebView来自字符串 字符串数组 如下所示 webView loadHTMLString NSString stringWithFor

随机推荐

  • JFormattedTextField 仅限于 0 或 1

    我想限制用户可以在文本字段中输入的字符 如何限制 JFormattedTextField 仅接受 0 或 1 的 8 位数字 Use 文档过滤器 https stackoverflow com a 9430683 714968与模式JTex
  • 使用 FBGraph 登录 Facebook

    我是 iOS 开发新手 我想从我的 iPhone 应用程序连接到 Facebook 我跟着FBGraph API https github com reallylongaddress iPhone Facebook Graph API tr
  • Docker - 在源文件中构建 Arg

    我正在尝试构建一个 Docker 容器 我想将其源标签作为参数传递 构建脚本 docker build pull true build arg version version Docker 文件 ARG version FROM regis
  • Django:自定义中间件被调用两次

    我有一个自定义中间件 每个请求都会调用两次 我不明白为什么 这是我的中间件 class MyMiddleWare object def process request self request print FOO return None 这
  • Spark AccumulableCollection 不适用于 mutable.Map

    我正在使用 Spark 进行员工记录累积 为此我使用 Spark 的累加器 我使用 Map empId emp 作为cumulableCollection 以便我可以通过员工的 id 搜索员工 我已经尝试了一切 但它不起作用 有人可以指出我
  • 无论缓冲区设置如何,PHP 命令行输出缓冲区都会输出

    我正在为一些类编写单元测试 这些类在其中有回声 我想抑制这个输出和想法ob start and ob clean 就足够了 但它们没有效果 public function testSomething ob start class new M
  • 合并 Spark scala Dataframe 中的行

    合并 Spark Dataframe 中的行 我有如下数据 ID Name Passport Country License UpdatedtimeStamp 1 Ostrich 12345 ABC 11 02 2018 1 BCD 10
  • 应用程序无法正确启动(0xc000007b)Visual Studio C++

    我有一个简单的 hello world C 程序 它链接 sqlite3 dll 64 位版本 我已在各自的路径中正确添加了 sqlite3 h 和 sqlite3 dll 这些项目针对 64 位架构进行编译 编译和链接都很顺利 当我尝试运
  • 如何覆盖 Angular 2 材质样式?

    我在有角度的材料中选择了这个 它的代码
  • 配置为侦听端口 8080 的 Tomcat 连接器无法启动

    我刚刚下载了这个项目 https github com oktadeveloper okta spring boot 2 angular 5 example https github com oktadeveloper okta sprin
  • Google Apps 脚本 .gs 文件中的 Logger.log(...) 没有输出 - 出了什么问题?

    我有一堆服务器端代码 我使用 Logger log message 进行记录 但单个 gs 文件不会记录 即使有这样简单的声明 function uploadFiles form Logger log uploadFiles Hello 如
  • 在 html 中显示列表和子列表

    如何组织 html 代码 使用 ol li 等 来呈现此类列表 带有子列表 1 BLA BLA BLA 1 1 Bla bla bla 1 2 Bla bla bla 1 3 Bla bla bla lalal balalala lalal
  • CKEditor对话框选择框动态填充

    我在对话框中有两个选择框 我想知道是否可以根据第一个框的选择设置第二个选择框的内容 即 如果选择框 1 选择了 x 则选择框 2 的内容为 a b c 如果 select box1 选择了 y 则 select box2 内容为 d e f
  • Pandoc:转换为 HTML 时没有换行

    我正在从 Markdown 转换为 HTML 如下所示 pandoc columns 70 mathjax f markdown input pdc t html Ss gt out html 除了文本没有换行之外 一切正常 我尝试了不同的
  • Docker Hub 和 git 子模块

    我有一个使用 git 子模块的存储库 并且我在 Docker Hub 上配置了自动构建 在构建过程开始时 Docker Hub 似乎从默认分支 master 中提取存储库 更新子模块 然后签出到触发构建的特定分支 假设分支 feature
  • 如何在 R 中向数据集添加标题?

    我需要读取以下数据文件夹中的 wdbc data http archive ics uci edu ml machine learning databases breast cancer wisconsin http archive ics
  • Delphi XE2 / Indy TIdTCPServer /“连接由对等方重置”

    我在 Delphi XE2 中使用 Indy 使用 TIdTCPServer 发送 TCP 消息时遇到一个问题 举个例子 我有 2 台设备 我将与设备 1 进行通信 当我向设备 1 发送消息时 消息发送正常 但在不关闭程序的情况下 当我向设
  • SQlite:如何找到互斥对?

    这里有张桌子Likes有字段ID1 ID2其中包含互斥对 例如 1689 1709 and 1709 1689 我想找到他们 我尝试了串联 但没有成功 select L ID1 L ID2 from Likes L where L ID1
  • Windows 10 可以从应用商店下载 Windows 8.0 应用程序吗?

    我的 Windows 开发中心仪表板中有 Windows 8 0 软件包 我想知道 Windows 10 用户是否可以通过某种方式从 Windows 应用商店查看并下载我的应用程序 看来它不起作用 怎么做 我是否必须将我的项目 重新定位 到
  • UIWebView动态内容大小

    我环顾四周 没有看到任何快速相关的方法来做到这一点 我试图让我的 UIWebViews 高度是动态的 我有一个使用 loadHtmlString 函数加载数据的 UIWebView 问题是我从 sqlite 数据库加载数据 每次加载不同长度