与可变高度可编辑NSTextFields在MacOS的应用NSTableView的行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与可变高度可编辑NSTextFields在MacOS的应用NSTableView的行相关的知识,希望对你有一定的参考价值。
Xcode的10.1,雨燕4.2,MACOS 10.14.2
我试图做一个简单的做了,那里有一系列NSTableView
行的MacOS的列表应用,每一个里面是一个NSTextField
。每个字段是一个待完成项目。我想NSTableView
行扩大以适应每个NSTextField
中的文本的大小。
我有以下所有工作的:
- 设置在
NSTextField
文字中并根据需要NSTableView
行扩大。自动布局约束在我的故事板设置。 - 使用
tableView.reloadData(forRowIndexes: ..., columnIndexes: ...)
设置文本和正确调整大小的表行。 但这样做tableView.reloadData()
每NSTextField
文本单行总是复位如下所示:如果你点击进入重新加载整个表后,有趣的是NSTextField
,现场调整大小以适合再次对其内容:
我相信我已在我的NSTextField
所有适当的自动布局限制,我使用了定制的子类,以及(从helpful answer here):
class FancyField: NSTextField
override var intrinsicContentSize: NSSize
// Guard the cell exists and wraps
guard let cell = self.cell, cell.wraps else return super.intrinsicContentSize
// Use intrinsic width to jibe with autolayout
let width = super.intrinsicContentSize.width
// Set the frame height to a reasonable number
self.frame.size.height = 150.0
// Calcuate height
let height = cell.cellSize(forBounds: self.frame).height
return NSMakeSize(width, height)
override func textDidChange(_ notification: Notification)
super.textDidChange(notification)
super.invalidateIntrinsicContentSize()
⭐️Here是一个样本项目:https://d.pr/f/90CTEh
我在茫然,还有什么我可以试试。有任何想法吗?
我认为这是在界面生成器的约束的一些基本问题。调整窗口的大小使一切都靠不住。此外,你应该在你validateEditing()
类textDidChange(forBounds:)
调用FancyField
。我创建了一个示例项目,已经做了你想要的Github什么
写评论,如果你有任何问题。
思考一点点吧,以为我会在这里添加代码的肉。只有真正需要工作的事情,是对的NSTextField更新时,“任务”正在更新。以下是对的NSTextField所需的代码。
public class DynamicTextField: NSTextField
public override var intrinsicContentSize: NSSize
if cell!.wraps
let fictionalBounds = NSRect(x: bounds.minX, y: bounds.minY, width: bounds.width, height: CGFloat.greatestFiniteMagnitude)
return cell!.cellSize(forBounds: fictionalBounds)
else
return super.intrinsicContentSize
public override func textDidChange(_ notification: Notification)
super.textDidChange(notification)
if cell!.wraps
validatingEditing()
invalidateIntrinsicContentSize()
希望能帮助到你。
以上是关于与可变高度可编辑NSTextFields在MacOS的应用NSTableView的行的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有颤动的可滚动视图中使用具有可变高度内容的TabView?
如何在带有 Flutter 的可滚动视图中拥有具有可变高度内容的 TabView?
NSTextView/NSTextfields 中的工具提示
如何检查NSString格式是否包含与可变参数相同数量的说明符?