1

我正在创建一个 Cocoa 应用程序,其中一个视图将包含当前加载文档的“十六进制转储”。到目前为止,我一直在使用沼泽标准(而且非常不吸引人)NSTextField,但我现在正在寻找更强大的东西。

我非常0xED.app喜欢并且很想复制它的主要“十六进制转储”视图。我该怎么做呢?

我不一定喜欢吸引眼球,而是能够在不选择偏移量或文本列的情况下选择一系列字节。我什至不知道从哪里开始有效地实施这一点。当然这不是在空白画布上绘制的吗?

0xED 截图

4

3 回答 3

0

我的猜测是它可能是使用NSTableView或它的子类来完成的。

以这种方式完成正确的文本选择可能有点棘手,但它可能是可能的。

于 2011-01-07T22:39:44.680 回答
0

要开始并了解事情的基本原理:

  1. 子类 NSView。
  2. 添加一个实例变量来保存你的 NSData。
  3. 覆盖drawRect:

对于大量数据,这种方法会很慢,但可以很好地处理实现 NSView 子类。之后,您将希望通过实现比一次绘制一个字符串的重复调用更好的方法来提高绘图性能。您还需要实现对 mouseDown: 和 keyDown: 等方法的覆盖,以处理来自用户的输入以允许选择字节范围等操作。

这应该让你开始,一旦你开始了,我建议你提出后续问题。

于 2011-01-08T03:42:04.543 回答
0

如果你想看看 Cocoa 接口是如何构建的,你可以使用NibToXibConverter

  1. 下载 0xED,右键单击 0xED.app 并选择“显示包内容”。提取 Contents/Resources/English.lproj 文件夹。
  2. 运行 NibToXibConverter,浏览到上面提取的文件夹,然后在“反编译 NIBs”旁边打勾。
  3. 选择“转换”按钮,它将 NIB 转换为 XIB
  4. 双击 XIB 以在 XCode 中打开它,您可以看到它们是如何构造的

    • 您会注意到,在 0xED 的情况下,他正在使用自定义类(很可能是 UIView 的子类,如 Jon Hess 所建议的那样具有自定义绘图)。
于 2014-03-12T00:23:47.063 回答