【问题标题】:A control in NSTableCellView is being moved to right automatically after resizing or scrolling调整大小或滚动后,NSTableCellView 中的控件会自动向右移动
【发布时间】:2017-04-27 02:39:41
【问题描述】:

我正在尝试实现一个显示 NSTableCellView 中项目计数的计数器视图。 奇怪的是,在调整窗口大小或滚动具有 NSTableCellView 的 NSOutlineView 后,它会自动向右移动。 这是它的一些截图。调整窗口大小后,您将能够看到显示“42”向右移动的计数器视图。

以下是计数器视图的初始状态。 以下是调整窗口大小后的状态。 以下是初始位置与调整窗口大小后位置之间的差异。 单元格自动调整大小属性 计数按钮自动调整大小属性

我猜这与滚动视图有关,但我无法找到有关此问题的更多线索。顺便说一句,Mac 上的官方邮件应用程序与此相同,但不同之处在于邮件应用程序的计数器在启动后立即更改,因此在调整窗口大小后不会移动。

有人知道吗?任何想法将不胜感激。

这是一个链接,可让您下载苹果提供的示例项目,您可以重现我所面临的问题。 Sidebar Demo App that providing by Apple.

您只需要在从项目 -> 目标 -> 部署信息部分运行它之前更改部署目标。

【问题讨论】:

  • 你在使用自动布局吗?如果有,有什么限制?这显然是一些对齐问题,但不知道如何指定对齐,不可能提供建议。
  • 感谢您的回复。不,我没有使用自动布局。我正在使用自动调整属性。我只是通过 Interface Builder 连接到右边。
  • 我附上了 2 个与 Autoresize 属性相关的屏幕截图。
  • 大纲视图的列大小和列大小调整是什么?看起来该列首先具有初始宽度,然后自动调整大小。
  • @Willeke Column size 是 210 和 TableCellView 一样。

标签: cocoa nsoutlineview


【解决方案1】:

如果我正确解释了自动调整屏幕截图,则“42”控件的行为与指定的一样。您已将“42”计数器的右侧固定在单元格的右侧。这就是它停留的地方,粘在单元格的右侧。

单元格被固定在 tableview 的左侧,它就在那里,粘在 tableview 的左侧。您没有将单元格的右侧固定到任何东西上,因此当您调整大小时,右侧会随心所欲地移动,仅保持单元格的指定宽度。如果您想将单元格的右侧粘合到 tableView 或列的宽度(不确定它是哪个),请将其固定。请指定单元格的最小宽度。如果您未指定最大宽度或固定宽度,则单元格将随着调整大小而拉伸和收缩。如果您固定宽度,则只有右侧的视图或列会拉伸。

【讨论】:

  • 感谢您的回复。顺便说一句,即使我已将单元格的右侧固定到右侧,在调整大小后,“42”控件仍会移动到右侧。此外,即使我取消固定到右侧的“42”,它的工作方式也是如此。我认为邮件应用启动后自动调整计数位置将是一个提示。
猜你喜欢
  • 1970-01-01
  • 2012-07-13
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多