Saya perlu merender string html di aplikasi swiftui saya.

Saya menemukan ini: Cara menampilkan HTML atau Penurunan harga di Teks SwiftUI?

Tetapi saya mencoba setiap solusi di sana dan saya mendapatkan layar kosong!

Ini kode saya:

import SwiftUI
import WebKit


struct HTMLStringView: UIViewRepresentable {
    let htmlContent: String

    func makeUIView(context: Context) -> WKWebView {
        return WKWebView()
    }

    func updateUIView(_ uiView: WKWebView, context: Context) {
        uiView.loadHTMLString(htmlContent, baseURL: nil)
    }
}


struct audioInfoView: View {
    
    let longDetails: String

    
    var body : some View{
        
        ScrollView{
            
            ZStack{
                
                HTMLStringView(htmlContent: "<p>\(longDetails)</p>")
                
                //Text(longDetails)
             
                
            }.padding()
        }.padding(.top,50)
        
    }
}

let longDetails: String adalah string dengan tag html yang diteruskan dari tampilan lain.

Jika saya melakukan Text(longDetails), saya dapat melihat teks dan semua tag html tetapi ketika saya melakukannya HTMLStringView(htmlContent: "<p>\(longDetails)</p>"), saya tidak melihat apa-apa dan hanya menampilkan layar kosong!

Apa yang saya lakukan salah?

0
rooz far 13 Mei 2021, 20:16

1 menjawab

Jawaban Terbaik

WKWebView memiliki tampilan gulir di dalamnya dan Anda juga memiliki HTMLStringView yang dibungkus dengan ScrollView, yang menyebabkan beberapa konflik tata letak.

Pilihan:

  1. Lepaskan bagian luar ScrollView:
var body : some View{
        HTMLStringView(htmlContent: "<p>\(longDetails)</p>")
    }
  1. Lewati ketinggian eksplisit:
var body : some View{
    ScrollView{
        ZStack{
            HTMLStringView(htmlContent: "<p>\(longDetails)</p>")
                .frame(height: 200)
        }.padding()
    }.padding(.top,50)
}

Apa yang Anda pilih dapat bervariasi berdasarkan kasus penggunaan Anda. Anda mungkin juga ingin menjelajahi .isScrollEnabled di WKWebView jika Anda tidak ingin WKWebView dapat digulir. Dan, sepertinya Anda mungkin juga berakhir dengan kasus di mana Anda perlu menemukan ketinggian konten WKWebView: Bagaimana cara menentukan ukuran konten wkwebView?

3
jnpdx 13 Mei 2021, 17:24