2011-01-07 55 views
1

我正在創建一個Cocoa應用程序,其中一個視圖將包含當前加載文檔的「十六進制轉儲」。直到這一點,我一直在使用沼氣標準(並且非常沒有吸引力)NSTextField,但我現在正在尋找更強大的功能。在OS X上在可可中實現自定義NSView

我的0xED.app大風扇,很想複製其主要的「十六進制轉儲」的看法。我會如何去做這件事?

我不一定養眼之後,卻選擇字節範圍還沒有選擇偏移或文本列的能力。我甚至會在哪裏開始有效地實施這一點,我感到很失望。當然,這不是畫在空白的畫布上?

0xED screenshot

回答

0

要開始,看看事情的基本工作原理:

  1. 子類的NSView。
  2. 添加一個實例變量來保存你的NSData。
  3. 覆蓋的drawRect:

這種做法將是大量數據的速度慢,但會給你上實現的NSView子類的好手柄。之後,您需要通過實施比反覆調用一次繪製字符串更好的東西來提高繪圖性能。您還需要實現像mouseDown:和keyDown這樣的方法的覆蓋:處理來自用戶的輸入以允許選擇一定範圍的字節等內容。

這應該讓你開始,一旦你有這樣做,我會建議詢問後續問題。

0

我的猜測是,它可能使用NSTableView或它的子類來完成。

以這種方式獲得正確的文本選擇可能有點棘手,但它可能是可能的。

0

如果你想看看一個可可界面是如何構建的,你可以使用NibToXibConverter

  1. 下載0xED,右鍵單擊0xED.app並選擇「顯示包裝內容」。提取Contents/Resources/English.lproj文件夾。
  2. 運行NibToXibConverter,瀏覽到上面提取的文件夾,並在「反編譯NIB」旁邊打勾。
  3. 選擇「轉換」按鈕,它會發鈔銀行轉換爲XIBs
  4. 雙擊一個XIB XCode中打開它,你可以看到他們是如何構造的

    • 你會注意到,在他使用自定義類(很可能是Jon Hess建議的自定義繪圖的UIView的子類)。