NuPlay / RichText

Easily show RichText(html) in SwiftUI
MIT License
209 stars 36 forks source link

WebView content dynamic height evaluation not working when document changes height #29

Closed mirko-milovanovic-vidiemme closed 1 year ago

mirko-milovanovic-vidiemme commented 1 year ago

Considering this situation:

struct MyHtmlView: View {
    let longHTML: String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed est est, mattis vel ante sit amet, porttitor interdum dui. Nunc cursus lobortis ex, ut faucibus felis malesuada id. Vivamus in risus nec dolor ullamcorper tincidunt in at velit. Vestibulum nec mollis ipsum. Phasellus volutpat augue odio, ultricies accumsan magna eleifend tristique. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque efficitur sem non dui ultricies sollicitudin eu eu sapien."
    let shortHTML: String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed est est, mattis vel ante sit amet, porttitor interdum dui. Nunc cursus lobortis ex, ut faucibus felis malesuada id."

    @State private var isExpanded: Bool = false

    var body: some View {
        VStack {
            RichText(html: isExpanded ? longHTML : shortHTML)
                .lineHeight(120)
                .colorScheme(.auto)
                .transition(.easeOut)
                .background(Color.red)

            Button {
                isExpanded.toggle()
            } label: {
                Text("Show more/less")
            }
        }
    }
}

When the HTML changes from a long description to a short one the RichText frame's height remains equal to the bigger one calculated from the long description's height leaving a blank space underneath the RichText view

NuPlay commented 1 year ago

30 Thanks for contributing the code 😀