在 SwiftUI WebView 中自定义内容(添加页脚和页眉注释)

Posted

技术标签:

【中文标题】在 SwiftUI WebView 中自定义内容(添加页脚和页眉注释)【英文标题】:Customize Content (Add Footer And Header Note) In SwiftUI WebView 【发布时间】:2020-08-10 07:37:56 【问题描述】:

我对 Swift 和 SwiftUI 还是很陌生。我想通过 WebKit:WKWebView 显示 webview。

我尝试如下实现它:

var webView: WKWebView? 
    didSet 
        guard let webView = webView else  return 
        webView.frame = view.frame
        view.addSubview(webView)
    

您可以从这里找到更多详细信息:https://github.com/sbertix/Swiftagram/issues/48

当我实现它时,它如下所示:

但我想自定义 WebView 的内容,如下所示:

有没有办法像上面那样实现?

【问题讨论】:

【参考方案1】:

最简单的就是将这三个视图(header-webview-footer)包裹在VStack 中,即如下所示(当然你的页眉页脚可以是任何)

注意:WebView 任何你的 WKWebView 包装器(我从 https://***.com/a/61059318/12299030 拿来测试)

struct DemoView: View 
    var body: some View 
        VStack(spacing: 0) 
            HeaderView()
            WebView(url: URL(string: "https://www.***.com"))
            FooterView()
        


struct HeaderView: View 
    var body: some View 
        Text("Header Note")
            .foregroundColor(.yellow)
            .frame(maxWidth: .infinity, minHeight: 60)
            .background(Color.red)
    


struct FooterView: View 
    var body: some View 
        Text("Footer Note")
            .foregroundColor(.yellow)
            .frame(maxWidth: .infinity, minHeight: 100)
            .background(Color.red)
    

【讨论】:

Asperi,感谢您的回答。当您查看我的示例时,webview 不会覆盖/扩展到整个页面。有没有像 LayoutConstraint 这样的实现? 不,屏幕截图显示工作表,只需将 DemoView(当然是您的视图)放在需要的工作表中。 源码为:github.com/sbertix/Swiftagram/tree/main/Examples/FollowersWebview调用者:github.com/sbertix/Swiftagram/blob/main/Examples/Followers/…

以上是关于在 SwiftUI WebView 中自定义内容(添加页脚和页眉注释)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中自定义角度变化的动画

如何在 SwiftUI 中自定义 Slider 蓝线?

如何在 SwiftUI WidgetKit 占位符中自定义占位符外观?

SwiftUI 中自定义网格视图的额外不必要渲染问题

在列表中加载 WebView 而无需重新加载 webView 内容 SwiftUI

在 SwiftUI 中的 tabview 中嵌入 webview