【发布时间】:2021-10-27 10:13:24
【问题描述】:
我目前正在开发一个应用程序,该应用程序在单个列中显示不同 SwiftUI 文件的代码。我正在使用多个 WKWebView 实例来显示每个文件(以便于托管 + 内置语法突出显示支持)。 WebView 的大小适合带有填充的容器:
对于一些较大的项目——包含大量文件——我正在尝试实现一个LazyVGrid,它可以并排显示较小的支持文件:
问题
但是,当窗口变小时,我无法让网格调整为单列(如果用户使用的是超宽显示器,我什至无法调整为 3 列;不过,这太多了优先级较低)。 LazyVGrid 是解决此问题的最佳方法,还是我应该采取不同的方法?我觉得我很接近。
GridLayout.swift
struct GridLayout: View {
let data: [String]
enum dataType { case title; case url }
let columns = [GridItem(.flexible()), GridItem(.flexible())]
func get(_ forType: dataType, _ string: String) -> String {
if forType == .title { return string.components(separatedBy: "*")[0] }
if forType == .url { return string.components(separatedBy: "*")[1] }
return ""
}
var body: some View {
VStack {
LazyVGrid(columns: columns) {
ForEach(data, id: \.self) { i in
CodeView(title: get(.title, i), height: 500, url: get(.url, i))
.frame(minWidth: 300, idealWidth: 400, maxWidth: .infinity, alignment: .center)
}
}
}
}
}
【问题讨论】:
标签: ios swift macos swiftui wkwebview