【发布时间】:2016-04-14 21:45:00
【问题描述】:
我有一个用 Swift 编写的 OS X 应用程序(感谢 Mathias 和 Gallagher),它使用基于单元格的 NSTableView。客户的要求之一是能够增加每个文本字段单元格中显示的文本的字体大小。经过一番堆栈溢出谷歌搜索后,这一切似乎都非常简单:将每个 NSTableView 列的 dataCell 字体设置为所需的字体和大小;然后继承 NSTextFieldCell 并覆盖 drawInteriorWithFrame 和 titleRectForBounds 并调整高度以适合矩形。
但是,由于 Apple 已弃用基于单元格的 NSTableView,转而支持基于视图,我想我应该将代码更改为基于视图。
啊!看似如此简单的变化,却让我这两天揪心的悲痛欲绝。我可以很好地改变文本字体大小,但 NSTextFieldCell NSRect 高度保持固定。我在网上看到的几个例子是针对 iOS 的,不适用于 OS X。
有没有简单的方法可以做到这一点?
【问题讨论】:
-
我不知道容易。但这样做的一般方法是使用字体大小计算文本的高度,然后使用该高度作为文本字段的高度。
-
是什么让你认为必须使用基于视图的 NSTableView 才能使用自定义字体大小?对于这样一个简单的任务,您不必为任何东西子类化。
-
您可以使用委托来更改字体大小
-
您是否需要能够为每个单独的单元格(具有不同大小的单元格)使用不同的字体大小?或者只是能够同时更改所有单元格使用的大小?
-
我正在使用 NSFont.systemFontOfSize 计算文本的高度,这正确设置了表格视图行的高度,但不是文本本身。
标签: swift macos fonts nstableview