如何在放大的 NSScrollView 中修复 NSTextView 的奇怪大小

Posted

技术标签:

【中文标题】如何在放大的 NSScrollView 中修复 NSTextView 的奇怪大小【英文标题】:How to fix NSTextView's weird sizing inside a magnified NSScrollView 【发布时间】:2019-05-06 12:47:44 【问题描述】:

我在 NSScrollView/NSClipView 中有一个 NSTextView,这是通常的设置。当我用[NSScrollView setMagnification:...] 放大滚动视图并调整窗口大小时,文本视图框架的宽度会不断变大,无论我是拉伸还是缩小窗口。

如果滚动视图没有放大,文本视图表现正常。我尝试删除约束并禁用子视图自动调整大小,但没有任何帮助。每当我设置任何类型的放大倍数时,每次调用调整大小时,文本视图大小都会发生变化。如果放大倍数低于 1,则缩小。

TextContainer 中的任何错误也不应该使它变宽,因为我已经设置了textContainer.widthTracksTextView = false;

我试图通过设置 insets 来使 textContainer 在我的 NSTextView 中居中,但是随着大小的不同,它变得不可能。我已经浏览了我的代码,没有任何东西可以调整它的大小。这是一个错误还是 setMagnify: 会导致 LayoutManager 中的约束或其他一些数学问题?

【问题讨论】:

【参考方案1】:

对于任何试图弄清楚这一点的人: 这是由放大视图或其任何子视图的最小宽度约束引起的。似乎是一个错误,因为我无法理解这将是如何预期的行为。

只需删除>= 约束,并在需要时限制运行时的大小。

【讨论】:

以上是关于如何在放大的 NSScrollView 中修复 NSTextView 的奇怪大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NSScrollView 中强制重绘内容

如何让 NSScrollView 在 10.9 及更高版本中居中文档视图?

如何在 NSScrollView 中控制 NSTableView 的绘制?

如何设置 NSScrollView 的内容大小?

如何使用鼠标滚轮修复放大和缩小?

如何在 Mac 上的 NSScrollView 上执行 contentInset