gpt4 book ai didi

swift - 根据内容自动调整基于 NSTableView 的 View 的宽度

转载 作者:搜寻专家 更新时间:2023-11-01 05:37:08 25 4
gpt4 key购买 nike

标题应为:Automatically adjust width of the containing NSWindow of a view based NSTableView based on NSTableCellView's NSTextField content intrinsic content size.

有点像this other question ,我想实现一个自动完成 NSWindow,里面有一个 NSTableView,它可以调整到在 NSTableCellView 中实现为 NSTextField 的可用自动完成长度的宽度。每个自动完成显然应该显示在一行上......

上一个问题已经回答了,但只涉及到NSTableView的高度。我想知道如何对宽度做“相同”。我想使用自动布局尽可能多地实现解决方案。

对于参与 NSWindow 最终显示的每个 View 元素,我尝试将水平“内容拥抱优先级”和“内容压缩阻力优先级”设置为最大值 1000。我在想 NSTextField 的固有内容大小会迫使所有其他元素进行调整,但它不起作用。

设置 NSTableColumn 宽度也不起作用,因为 NSScrollView 的 NSClipView 未被此宽度修改:NSScrollView 调整并创建水平滚动条以覆盖整个“文档”。

这是一个示例项目的链接,用于演示该问题:

sample project

任何帮助将不胜感激!

最佳答案

我使用此代码修复了问题,其中 scrollViewWidthConstraint 是 NSScrollView 宽度约束的 IBOutlet,localTableView 是 NSTableView 的 IBOutlet,tableColumn 是 NSTableColumn 的 IBOutlet(在我的情况下是唯一的)。

注意:GitHub 上的链接项目已根据更改进行了更新。

override func viewDidLoad() {

super.viewDidLoad()

self.updateTable()
}

func updateTable() {

localTableView.reloadData()

var computedWidth: CGFloat = 0

for var row = 0; row < 10; row++ {

let tableCellView = self.tableView(localTableView, viewForTableColumn: tableColumn, row: row) as! NSTableCellView

computedWidth = max(computedWidth, tableCellView.textField!.intrinsicContentSize.width)
}

scrollViewWidthConstraint!.constant = computedWidth

scrollView.needsUpdateConstraints = true
}

关于swift - 根据内容自动调整基于 NSTableView 的 View 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35657740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com