【问题标题】:NSTextField Retina Font Size IssueNSTextField Retina 字体大小问题
【发布时间】:2020-01-26 17:57:30
【问题描述】:

我在NSTextField 字体渲染方面遇到了一个非常奇怪的问题。

NSTextFieldNSOutlineViewNSTableCellView 内。 在我没有 Retina 显示屏(外置)的主机上,字体大小看起来很正常。

但是,如果我切换到配备 Retina 显示屏的 MacBook 12",相同的单元格会将其 NSTextField 内的文本渲染得更小。这让我感到困惑,因为我在应用程序中有另一个不受此影响的大纲视图问题。我还通过从调色板中拖入一个新字段来确保我没有为文本字段配置任何特殊内容。

我还手动对NSTextField进行了子类化,看看是谁将字体大小从13pt设置为11pt,调用来自系统框架。

什么会影响 Retina 显示器的字体大小?

【问题讨论】:

  • @matt Nah,因为系统在我从代表返回单元格后更改了它。 wantsLayer 未设置。
  • 是的,我已经尝试过了,如果我覆盖访问器,它就可以工作。但是我更愿意解决这个问题的根本原因,而不是创建一个子类来解决它:)

标签: swift macos cocoa


【解决方案1】:

我怀疑这与 Retina 显示器无关。只是两个帐号的设置不同而已。

特别是,我怀疑有这个问题的大纲视图是一个源列表。它的selectionHighlightStyle.sourceList。源列表根据系统偏好设置 > 常规 > 侧边栏图标大小调整其大小。 (更改图标大小也会更改标签大小。)您可以更改该设置,您的应用应该实时调整源列表项的大小。

理想情况下,您的源列表应遵循此设置。所以,你应该接受这种行为。如果您不想要它,您可以重新考虑将大纲视图设为源列表。

如果您确实希望将大纲视图保留为源列表但覆盖此行为,您可以在应用范围内执行此操作。您可以让您的应用在 UserDefaults 中为键 NSTableViewDefaultSizeMode 设置一个值。小为 1,中为 2,大为 3。

【讨论】:

  • 你是对的!它在视网膜设备上设置为small,在另一台机器上设置为medium。我有 2 个大纲视图,都是源列表。但只有其中一个表现出这种行为。
  • 在这两种情况下,您是否将表格单元格视图的textField 出口连接到文本字段?该出口是 Cocoa 用来应用首选项设置的地方。我想断开该插座是防止该问题的另一种方法。但是,连接该插座还有其他一些有用的效果,例如提高可访问性。
  • 它们都已连接。唯一的区别是一个文本字段是可编辑的,而另一个则不是。我将另一个更改为也可编辑,但它没有改变任何内容。
猜你喜欢
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2021-06-13
  • 2021-08-22
  • 2011-03-28
  • 2013-05-05
相关资源
最近更新 更多