Изменение размера шрифта NSTextField в соответствии с длиной содержимого - PullRequest
3 голосов
/ 29 июня 2011

У меня есть многострочный NSTextField, и мне нужно установить размер шрифта, чтобы при коротком содержании он отображался только в одной строке с большим размером шрифта,
но когда его содержимое длиннее, оно разделяется на две строки, а также уменьшает размер шрифта, чтобы содержимое оставалось в своих границах.

Я посмотрел на решение, предоставленное в Получите содержимое NSTextField в масштабе , но оно не работает с многострочными полями.

Ответы [ 2 ]

5 голосов
/ 29 февраля 2012

Я использовал этот подход для изменения размера шрифта многострочной метки. По сути, если длина строки слишком велика, размер шрифта уменьшается, чтобы он поместился внутри области метки. Надеюсь, это поможет.

if ([theText length] > 64) {
        [label setFont:[NSFont systemFontOfSize:10]];
    } else {
        [label setFont:[NSFont systemFontOfSize:13]];
    }

Где theText - строка NSSt, а label - это моя многострочная метка, в которой я хочу, чтобы текст отображался пользователю. Размеры этикетки фиксированного размера.

1 голос
/ 29 июня 2011

В NSTextField нет встроенного решения для динамического шрифта. Вы должны построить свой собственный алгоритм.

EDIT:

Это может быть не слишком сложно. Вы, вероятно, просто должны создать его подкласс, а затем выполнить метод, который делает (в псевдокоде):

if(text.length > someValue) 
    self.fontSize = 17 
else if (text.length < someValue)
    self.fontSize = 14
else
   self.fontSize = 12

Давайте подождем, если кто-то знает сторонний открытый исходный код, чтобы сделать это элегантно

...