Domanda

Sto creando un'applicazione Cocoa in cui un punto di vista conterrà il "dump esadecimale" del documento attualmente caricato. Fino a questo punto, sono stato utilizzando un NSTextField bog-standard (e molto sgradevoli), ma ora sto cercando qualcosa di più potente.

Sono un grande fan di 0xED.app e mi piacerebbe replicare il suo principale " dump esadecimale" vista. Come potrei fare per fare questo?

Io non sono necessariamente dopo l'eye-candy, ma la capacità di selezionare un intervallo di byte senza selezionare anche le colonne di offset o di testo. Sono una perdita quanto a dove mi sarei nemmeno iniziare ad attuare in modo efficace. Sicuramente questo non è disegnata su una tela bianca?

0xED screenshot

È stato utile?

Soluzione

Per iniziare e vedere come le cose fondamentalmente lavoro:

  1. sottoclasse NSView.
  2. Aggiungi una variabile di istanza per tenere il vostro NSData.
  3. Override drawRect:

Questo approccio sarà lenta per una grande quantità di dati, ma vi darà una maniglia buona per l'attuazione di una sottoclasse NSView. Dopo di che, ti consigliamo di migliorare le prestazioni di disegno mediante l'attuazione di qualcosa di meglio di ripetute chiamate per disegnare stringhe uno alla volta. Si potrà anche implementare le sostituzioni di metodi come mouseDown: e keyDown:. All'ingresso maniglia da parte dell'utente per consentire cose come selezionando un intervallo di byte

Questo dovrebbe iniziare, una volta che hai che andare, suggerirei chiedere follow-up domande.

Altri suggerimenti

La mia ipotesi è che probabilmente è realizzato utilizzando un NSTableView o sottoclasse di esso.

Potrebbe essere un po 'difficile da ottenere la selezione del testo corretto compiuto in questo modo, ma è probabilmente possibile.

Se si vuole prendere uno sguardo a come un'interfaccia di cacao è costruito è possibile utilizzare NibToXibConverter .

  1. Scarica 0xED, fate clic destro su 0xED.app e selezionare "Mostra contenuto pacchetto". Estrarre la cartella Contents / Resources / Italian.lproj.
  2. Esegui NibToXibConverter, selezionare la cartella estratta in precedenza, e mettere un segno di spunta accanto a "Decompile ONA".
  3. Selezionare il pulsante "Converti" e convertirà i ONA per XIBs
  4. Fare doppio clic su un XIB per aprirlo in XCode e si può vedere come sono costruiti

    • Si noterà che, nel caso di 0xED che sta usando una classe personalizzata (molto probabilmente una sottoclasse di UIView con il disegno personalizzato come suggerisce Jon Hess).
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top