- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个outlineView,我在其中放置了编辑时调整大小的NSTextView(想想大纲应用程序)。我已经完成了大部分工作,但有些行为不一致。
在我的 NSOutlineView 上设置:
outlineView?.usesAutomaticRowHeights = true
对于我的单元格 View ,我将 NSTextView 进行子类化。我设置了以下自动布局位:
self.translatesAutoresizingMaskIntoConstraints = false
setContentHuggingPriority(NSLayoutConstraint.Priority.defaultHigh, for: NSLayoutConstraint.Orientation.vertical)
并且我覆盖 NSTextView 上的固有内容大小计算:
override var intrinsicContentSize: NSSize {
guard let manager = textContainer?.layoutManager else {
return .zero
}
print("\(manager.usedRect(for: textContainer!).size) \(string)")
return manager.usedRect(for: textContainer!).size
}
(我在上面的代码中调用了layoutManager上的ensureLayout,但它没有添加任何内容)
当将 TextView 添加到大纲 View 时,每个 TextView 都会调用 intrinsicContentSize 两次。第一次返回的大小是正确的,但在第二次调用时,一些文本不必要地换行。下面显示了 4 个 TextView 的内在内容大小的两次传递的打印输出。列宽为 281,因此这些字符串都不应换行。第一遍它们都适合一行(14高),第二遍时,最后两个字符串换行,这很奇怪,因为它们不是最长的字符串:
(178.744140625, 14.0) New pointwddwek kelekwelek...
(100.720703125, 14.0) Related Subjects
(119.400390625, 14.0) Related Publications
(87.150390625, 14.0) Related Terms
(178.744140625, 14.0) New pointwddwek kelekwelek...
(100.720703125, 14.0) Related Subjects
(74.705078125, 28.0) Related Publications
(54.484375, 28.0) Related Terms
始终相同的字符串会导致相同的行为。例如。字符串“相关主题”从不换行,字符串“相关术语”始终换行。
当 View 呈现时,文本实际上并没有被换行,即使usedRect值暗示它会被换行。文本显示正确,但大纲 View 中的行 View 太高,因为它认为它有两行文本。
有什么指示我可能遗漏了什么吗? “ensureLayout”是否以某种方式引用它之前的计算,然后在将相同的字符串拟合到其最后计算的宽度时出现舍入问题?
最佳答案
好的,这里的关键是文本呈现正确,但 View 的大小错误。
我为 NSTextView 的布局管理器创建了一个延迟。 NSTextView 添加到 NSOutlineView 后,文本被设置了 3 次(这似乎效率非常低!)。仅在前两个文本布局之后才在 NSTextView 上调用内在内容大小。
从layoutManager中调用invalidateIntrinsicContentSize:didCompleteLayoutFor...修复了所有问题。
我仍然不明白这里发生了什么,以及为什么在呈现内容时所有这些方法都会被调用这么多次。我想这与自动布局的复杂性和相互排斥的事物有关。
我也不明白为什么在这个过程中只有一些计算不正确。
如果有人能对此有所启发,请在此发表评论!
关于swift - NSOutlineView 中的 NSTextView 的 IntrinsicContentSize 设置错误的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47927844/
根据Apple's documentation , NSOutlineView 要求 View 中的每个项目都是唯一的,但是,如果这实际上不符合业务需求怎么办?特别是,如何显示这样的内容 Item A
我有一个基于 View 的 NSOutlineView,我正在努力使项目可编辑。如果我单击一个项目来编辑它,它将从我单击的插入点开始,而不是选择整个文本。按 Enter/Return 进行编辑会选择整
我有一个带有复选框的 NSOutlineView。我将复选框状态绑定(bind)到带有键 shouldBeCopied 的节点项。在节点项中,我有 getter 和 setter,如下所示: -(BO
获得一个在 Controller 的 awakeFromNib 中配置的 NSOutlineView,带有数据源和自动保存的扩展节点。 一切都像魅力一样工作。 问题是在某个地方,有人也在保存滚动位置的
我阅读了关于 Outlineviews 和 DND 的另一篇文章,但我无法让我的程序运行。这篇文章的底部是我的项目 zip 的链接。它非常基本,只有一个大纲 View 和按钮。我希望它接收放置在其上的
我正在尝试将项目的实际折叠/展开状态存储在 NSOutlineView 中,以便稍后可以恢复。 NSOutlineViewDelegate 上有两种方法可用: outlineViewItemDidEx
我最近在没有帐户的情况下启动了另一个线程,因此我使用帐户在此处重新发布问题,以便我可以编辑该程序的当前链接,以便其他用户可以关注此问题。我还更新了下面的代码。这是我原来的问题: 我阅读了关于 Outl
看起来我的数据模型有一些问题,所以我时不时会收到此错误展开项目时。有谁知道这个断言意味着什么? 2010-10-20 03:04:47.547 test_tree[60332:613] * -NSOu
我正在尝试创建一个简单的文件夹浏览器,使用 NSOutlineView 显示树结构。将 monoMac 和 Xamarin Studio 与 XCode 界面生成器一起用于 UI。 我现在遇到的问题是
我有一个用 C# 编写的 MonoMac/Xamarin.MAc 项目。在其中,我有一个派生自 NSOutlineView 的自定义类,它显示某些项目的上下文菜单。通过这样做,而不是仅仅分配 Menu
我有一个简单的 NSOutlineView,通过 swift 初始化,有 2 列。我制作了以下非常简单的数据源,希望通过这种方式进行测试,但也许我这种格式是不允许的。我假设 TableView 仅根据
我想显示一个简单的 nsoutlineview 来显示层次结构。 当我通过 InterfaceBuilder 完成此操作时,一切都很好,但现在我尝试以编程方式进行操作,却遇到了一些麻烦。 这里是我用来
我正在开发一个应用程序,该应用程序需要一个源列表,例如在 Finder 中找到的源列表。到目前为止,我已经让核心数据与 NSOutlineView 一起使用,但组标题看起来不太像源列表。真实的源列表组
我想获取/设置NSOutlineView的选择索引路径。我该怎么做? 没有明显的方法来获取/设置选择索引路径。 如果您尝试绑定(bind)选择索引路径,并且没有将它们绑定(bind)到树 Contro
我创建了一个基于 View 的 NSOutlineView ,其中包含图像和徽章(内联按钮)。虽然自定义单元格足够宽,但我遇到以下问题: 因此,右侧有一个奇怪的边距覆盖了我的徽章(NSOutlineV
我有一个 NSOutlineView,上面有几个项目。每人有 3 个 child (地点、照片和社交)。他们都有相同的 child 。假设用户选择了地点,有谁知道我如何检测哪个项目是所选项目的父项?
我对此感到很难过。当涉及到基于 NSOutlineView 的 View 的对象持久性时,我遇到了非常奇怪的行为。目前我有一个对象,其中包含一个 object1 数组,该对象包含一个 object2
我正在使用基于 View 的 NSOutlineView 来创建源列表。NSOutlineView 连接到数据源和委托(delegate)对象。 但是,我似乎找不到需要实现的内容才能利用部分标题(例如
我正在尝试实现一个带有渐变背景的 NSOutlineView 子类: - (void)drawBackgroundInClipRect:(NSRect)clipRect { [gradient
我遇到了一个非常奇怪的问题: 我将 NSOutlineView 设置为 NSTableViewSelectionHighlightStyleSourceList。在某些情况下,第二级不缩进并与根节点显
我是一名优秀的程序员,十分优秀!