objective-c - 在 NSTableView 中调整 NSTableColumn 大小时强制重绘?

标签 objective-c cocoa macos nstableview

我已经在 NSTableView 的委托(delegate)中实现了 - (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row ,以将表格行的高度调整为最左边列的宽度变化。问题在于,只有该列在调整大小期间重绘(以及在调整大小期间滑入 View 的任何列)。

调整大小后会产生下面的时髦视觉效果。我想要的是一种在用户调整列大小时告诉 TableView 完全重绘的方法。现在我能做的最多的事情就是在该列完成调整大小后调用 setNeedsDisplay

alt text

最佳答案

查看 NSTableView method noteHeightOfRowsWithIndexesChanged:。您需要为高度已更改的行创建一个 NSIndexSet。

更新: 为了有一个安全的地方来调用它,您可以子类化 NSTableColumn 来重写 setWidth: 方法。然后,您可以发布您的表委托(delegate)可以观察到的自定义通知,或者您也可以覆盖 TableView 并让列告诉表直接告诉其委托(delegate)。

关于objective-c - 在 NSTableView 中调整 NSTableColumn 大小时强制重绘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558179/

相关文章:

swift - 文件 “xxx” 无法打开,因为没有这样的文件

python - 如何在 Mac OS X 上安装 Python 图像库?

swift - 具有 r32Float 像素格式的 MTLTexture 到位图

MacOS : get foremost window title

ios - 如何实现此功能,例如在天气应用程序中?

ios - 没有 reuseIdentifier 的 UITableViewCell

iphone - 确定第一个和最后一个 UITableViewCell

objective-c - 是否有工具可以确定我的部署目标应该是什么最低操作系统?

objective-c - 从字符串中删除字符和后面的所有内容

objective-c - 图片幻灯片放映