Pergunta

Quero criar programaticamente um NSTextView.Como posso determinar a altura correta do quadro para que a visualização exiba uma linha de texto na fonte padrão atual?

Foi útil?

Solução

A classe NSFont possui um método que pode fornecer o tamanho de um retângulo que incluiria uma string atribuída específica.Obtenha a fonte usada pela sua visualização de texto, crie uma string que sirva como um exemplo razoável do que estará na visualização de texto e use-a para informar a altura do seu quadro.(A altura do quadro precisará ser um número de pontos maior que o retângulo real no qual a string seria exibida.)

Como alternativa, você pode obter várias métricas da fonte e tentar calcular um quadro razoável a partir disso.Isso pode ou não funcionar;por exemplo, uma fonte como Apple Chancery tem uma grande variação dependendo dos glifos que estão sendo renderizados, onde eles estão em uma palavra e assim por diante;Não sei se você pode calcular antecipadamente qual seria o tamanho necessário sem saber exatamente o que iria renderizar.

Outras dicas

Seria mais normal usar um NSTextField do que um NSTextView para uma única linha de texto.

Com NSTextField, basta fazer o seguinte:

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

Ah, e não há nenhuma 'fonte padrão atual' integrada.Se um aplicativo tiver esse conceito, ele próprio precisará rastreá-lo.O painel de fontes não lê ou grava nada global, é usado para operar em objetos de texto específicos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top