Изменить размер шрифта в UILabel в зависимости от длины строки - PullRequest
0 голосов
/ 07 марта 2012

Допустим, у меня есть UILabel, который покрывает все окно приложения. В этом ярлыке отображается произвольный текст разной длины. Можно ли изменить размер шрифта текста в зависимости от длины текста?

Ответы [ 2 ]

7 голосов
/ 07 марта 2012

Да, UILabel может сделать это для вас, просто сделайте:

theLabel.adjustsFontSizeToFitWidth = YES;
theLabel.minimumFontSize = MIN_FONT_SIZE;

Внимание к этому (из документации):

Это свойство действует только тогда, когда установлено свойство numberOfLines до 1.

1 голос
/ 07 марта 2012

Я создал метод категории в одной точке.Вы в основном кормите его прямоугольником, и он возвращает подходящий шрифт.Может быть, вы можете получить что-то из следующего грубого примера:

- (UIFont *)fontSizeForRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode minFontSize:(CGFloat)minFontSize 
    {

            CGFloat fontSize = [font pointSize];
            UIFont *tempFont = [UIFont fontWithName:[font fontName] size:[font pointSize]];
            CGFloat acceptableFontSize = fontSize;
            while (fontSize > minFontSize) 
            {
               UIFont *testFont = [UIFont fontWithName:[tempFont fontName] size:fontSize];
               CGSize sizeWithTestFont = [self sizeWithFont:testFont constrainedToSize:CGSizeMake(rect.size.width, 99999.0) lineBreakMode:lineBreakMode];
                if (sizeWithTestFont.height > rect.size.height)
                    fontSize -= 1.0f; //Shrink the font size by a point
                else 
                {
                    //Fits.  Use it.  
                    acceptableFontSize = fontSize;
                    break;
                }
            }

            return [UIFont fontWithName:[font fontName] size:acceptableFontSize];
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...