Как динамически изменить размер шрифта текста в UITextView в iPhone - PullRequest
2 голосов
/ 22 октября 2009

У меня фиксированный размер UITextView, скажем, ширина и высота 150,150.

Цель - показать мысль дня. Обратите внимание, что размер должен оставаться постоянным, и я не могу его изменить.

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

Итак, как изменить шрифт UITextView в соответствии с длиной мыслительной строки.

Что не так со следующим кодом:

CGSize size;
    BOOL run=TRUE;
    CGSize txtViewSize = self.txt_tipView.frame.size;
    while(run){

        size = [self.txt_tipView.text sizeWithFont:[UIFont systemFontOfSize: currentSize] constrainedToSize:txtViewSize lineBreakMode:UILineBreakModeWordWrap];
        if((size.width<=txtViewSize.width) && (size.height<=txtViewSize.height))
            run = FALSE;
        else
            currentSize--;
    }
    self.txt_tipView.font = [UIFont fontWithName:@"Helvetica" size:currentSize];//[UIFont boldSystemFontOfSize:12];

Что происходит, так это то, что размер текста в TextView всегда равен 60. То есть в каждой строке есть только одно слово.

1 Ответ

4 голосов
/ 22 октября 2009

Установите неявный размер шрифта, скажем, самый большой приемлемый шрифт, который вы можете использовать. Затем выполните измерение размера текста с помощью:

CGSize size = [text sizeWithFont:[UIFont systemFontOfSize: currentSize] constrainedToSize: maxTextSize lineBreakMode:UILineBreakModeWordWrap];

Если полученный вами размер выходит за допустимые пределы, отрегулируйте размер шрифта и повторите. maxTextSize должен соответствовать размеру вашего UITextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...