Шрифт масштабирования многострочного текста UILabel для соответствия \n

Итак, я пытаюсь получить некоторый текст, чтобы соответствовать. Я использовал ответ из Изменение размера UILabel по размеру с Word Wrap, чтобы текст соответствовал размеру. Похоже, это работает, за исключением того, что текст сильно уменьшен и занимает около 50% ширины экрана.

Это код, который запускается, когда представлен контроллер представления:

self.user.title = @"Jeffrey C. Louie\n2326 Rockford Road\nCharlestown, MA 02129";
[self.titleLabel setText:self.user.title];

NSInteger fsize = 200;
[self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];

float height = [self.user.title sizeWithFont:self.titleLabel.font constrainedToSize:CGSizeMake(self.titleLabel.bounds.size.width, 99999) lineBreakMode:NSLineBreakByWordWrapping].height;

while (height > self.titleLabel.bounds.size.height && height != 0) {
    fsize -=1;
    [self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];
    height = [self.user.title sizeWithFont:self.titleLabel.font constrainedToSize:CGSizeMake(self.titleLabel.bounds.size.width, 99999) lineBreakMode:NSLineBreakByWordWrapping].height;
}

for (NSString *word in [self.user.title componentsSeparatedByString:@" "]) {
    float width = [word sizeWithFont:self.titleLabel.font].width;
    while (width > self.titleLabel.bounds.size.width && width != 0) {
        fsize -= 3;
        [self.titleLabel setFont:[UIFont fontWithName:self.titleLabel.font.fontName size:fsize]];
        width = [word sizeWithFont:self.titleLabel.font].width;
    }
}

пример текста, неправильно вписывающегося в представление

Мне кажется, что текст был масштабирован, чтобы уместить весь текст в 1 строку, как будто жестких разрывов строк не существовало. Есть ли способ заставить UILabel знать, что есть разрыв строки и масштабировать текст строк соответственно?

Спасибо


person Jordy    schedule 29.11.2013    source источник


Ответы (1)


вы можете использовать RTLabel вместо UILabel и заменить новый символ строки на <br> тег html. Нравиться:

RTLabel *label = [[RTLabel alloc] initWithFrame:/*your frame*/];
NSString htmlText = [yourText stringByReplacingOccurrencesOfString:@"\\n" withString:@"<br>"];
[label setText:htmlText];
[yourView addSubView:label];
person Prateek Prem    schedule 29.11.2013