Domanda

Voglio creare a livello di codice un NSTextView.Come posso determinare l'altezza corretta del frame in modo che la vista visualizzi una riga di testo nel carattere predefinito corrente?

È stato utile?

Soluzione

La classe NSFont ha un metodo che può darti la dimensione di un rettangolo che racchiuderebbe una stringa con attributi specifici.Ottieni il carattere utilizzato dalla visualizzazione del testo, crea una stringa che serva da esempio ragionevole di ciò che sarà nella visualizzazione del testo e utilizzala per informare l'altezza della cornice.(L'altezza della cornice dovrà essere un certo numero di punti più grande del rettangolo effettivo in cui verrà visualizzata la stringa.)

In alternativa, puoi ottenere le varie metriche dal carattere e tentare di calcolare un fotogramma ragionevole da quello.Potrebbe o non potrebbe funzionare;ad esempio, un carattere come Apple Chancery presenta un'enorme quantità di variazioni a seconda dei glifi che vengono renderizzati, dove si trovano in una parola e così via;Non so se puoi calcolare in anticipo quale sarebbe la dimensione necessaria senza sapere esattamente cosa avresti reso.

Altri suggerimenti

Sarebbe più normale utilizzare un NSTextField piuttosto che un NSTextView per una singola riga di testo.

Con NSTextField, basta fare quanto segue:

[textField setFont:myFont];
[textField sizeToFit];

Oh, e non esiste un "carattere predefinito corrente" integrato.Se un'applicazione ha un concetto del genere, deve tenerne traccia da sola.Il pannello dei caratteri non legge né scrive nulla di globale, viene utilizzato per operare su oggetti di testo specifici.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top