如何设置macOS SwiftUI Table列宽调整行为,不影响其他列?

注意:本问题仅针对macOS,不涉及iOS
我在macOS上有一个包含30列的大型Table,支持垂直和水平滚动。
当用户拖动调整SwiftUI的Table中某一列的宽度时,框架会先尽可能缩小其他列,再调整整个表格的宽度。(如上图所示,扩展“Label”列会挤压其他列。)
如何设置Table使其保留所有列宽,当调整某一列宽度时仅按需改变整个表格的宽度?
致Sweeper
以下是复现该行为的Table代码,你需要自行替换KeyPaths。注意代码中使用了Group(以支持超过10列,尽管此处仅展示9列)和TableStyle修饰符。
var body: some View { Table(cues, sortOrder: $sortOrder) { Group { TableColumn("", value: \SheetCue.associatedMasterCue!.notesCount) { cue in Text("Blah") } .width(min: 18, max: 18) TableColumn("Title", value: \SheetCue.associatedMasterCue!.title) { cue in Text("Blah") } .width(min: 80, ideal: 250, max: 2000) TableColumn("Artist", value: \SheetCue.associatedMasterCue!.artist) { cue in Text("Blah") } .width(min: 40, ideal: 200, max: 2000) TableColumn("Album", value: \SheetCue.associatedMasterCue!.album) { cue in Text("Blah") } .width(min: 40, ideal: 160, max: 2000) TableColumn("Composer/Writer", value: \SheetCue.associatedMasterCue!.composer) { cue in Text("Blah") } .width(min: 40, ideal: 160, max: 2000) } Group { TableColumn("Label", value: \SheetCue.associatedMasterCue!.label) { cue in Text("Blah") } .width(min: 40, ideal: 160, max: 2000) TableColumn("Publisher", value: \SheetCue.associatedMasterCue!.publisher) { cue in Text("Blah") } .width(min: 40, ideal: 160, max: 2000) TableColumn("Contact", value: \SheetCue.associatedMasterCue!.contactInfo) { cue in Text("Blah") } .width(min: 40, ideal: 160, max: 2000) TableColumn("Uses", value: \SheetCue.numberOfUses) { cue in Text(String(cue.numberOfUses.formatted())) } .width(min: 30, ideal: 40, max: 80) } } .onChange(of: sortOrder) { _, sortOrder in cues.sort(using: sortOrder) } .tableStyle(.bordered) }
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

