如何在 WKWebView 中垂直居中文本?

Posted

技术标签:

【中文标题】如何在 WKWebView 中垂直居中文本?【英文标题】:How to vertically center the text in WKWebView? 【发布时间】:2017-09-13 19:14:23 【问题描述】:

我在我的 ios (swift) 应用程序中使用 WKWebView,并且我正在使用 loadhtmlString(string, baseURL: )。现在的问题是我希望 HTML 在框架中垂直居中。文本长度可变。我该怎么做?

这是来自 Xcode 的 HTML 屏幕截图:

这是输出的图像。顶部的 HTML 位于上方,我希望它在其视图中居中对齐(视图距离顶部 300 点):

【问题讨论】:

请张贴截图或 HTML @Asleepace 添加了截图。 嗨,Amir - 让我震惊的是,最好的方法是编辑 HTML,或者通过注入一些内联 CSS 或应用外部样式表,而不是尝试调整 WKWebView 本身. 简单。 x = 10...这就是问题...对吗? 【参考方案1】:

尝试将此 HTML 与内联 CSS 一起使用,您可以替换要居中的 div 之间的内容:

  <div style="display:flex;align-items:center;height:100%;justify-content:center;">
    <p>You content here</p>
  </div>

此代码适用于我在 iPhone 6 模拟器上使用 Swift 3.0

import UIKit
import WebKit

class ViewController: UIViewController 
    
    var webView:WKWebView?

    override func viewDidLoad() 
        super.viewDidLoad()
    
    
    override func viewDidAppear(_ animated: Bool) 
        webView = WKWebView(frame: self.view.frame)
        self.view.addSubview(webView!);
        addHTML()
    
    
    func addHTML() 
        let html = "<html><body><div style='height:100%;background-color:black;display:flex;align-items:center;justify-content:center;'><p style='color:white;font-size:100px;'>Asleepace</p></div></body></html>";
        webView!.loadHTMLString(html, baseURL: nil)
    

示例输出

【讨论】:

这在 iOS 应用中似乎对我不起作用。除非我添加 height:500px ,否则它甚至不适用于 html。见这里:w3schools.com/html/tryit.asp?filename=tryhtml_basic_document @AmirSiddique Ya the height:100% 用于填充父容器,不确定您使用的是哪个尺寸。 @AmirSiddique 我刚刚在 xcode 中测试过,对我来说似乎工作正常,看看上面的演示代码 不是真的。我通过使用 padding-top 得到了一个妥协的解决方案,但后来做了艰苦的工作,并为数据库中的每个 html 字符串手动设置了 WkWebView 高度。这很乏味,但它提供了我想要的。

以上是关于如何在 WKWebView 中垂直居中文本?的主要内容,如果未能解决你的问题,请参考以下文章

-水平居中垂直居中水平垂直居中

如何在堆栈中垂直或水平居中小部件?

文本DIV水平居中和垂直居中

关于多行文本的垂直居中

JavaFX - 垂直居中TextFlow中的文本

vue 弹性布局 实现长图垂直居上,短图垂直居中