I want to control the frame in which the LPLinkView is rendered. I have tried setting the frame explicitly but looks like LPLinkView doesnot respect it.
The only way I have seen any success to control the space taken up by LPLinkView is to wrap LinkRow inside a ScrollView, but that is not what I intend to do.
Here is the code snippet
import SwiftUI
import LinkPresentation
struct ContentView: View {
@State var redrawPreview = false
var body: some View {
VStack {
LinkRow(previewURL: URL(string: "https://en.wikipedia.org/wiki/Kingfisher")!, redraw: self.$redrawPreview)
.frame(minWidth: 0, maxWidth: 100, minHeight: 0, maxHeight: 100)
}
.padding(.leading, 10)
.padding(.trailing, 10)
.background(Color.red)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct LinkRow : UIViewRepresentable {
var previewURL:URL
@Binding var redraw: Bool
func makeUIView(context: Context) -> LPLinkView {
let view = LPLinkView(url: previewURL)
let provider = LPMetadataProvider()
provider.startFetchingMetadata(for: previewURL) { (metadata, error) in
if let md = metadata {
DispatchQueue.main.async {
view.metadata = md
view.sizeToFit()
self.redraw.toggle()
}
}
else if error != nil
{
let md = LPLinkMetadata()
md.title = "Error"
view.metadata = md
view.sizeToFit()
self.redraw.toggle()
}
}
return view
}
func updateUIView(_ view: LPLinkView, context: Context) {
}
}