2013-11-29 3 views
0

Так что я пытаюсь получить текст в соответствии с Я использовал ответ от Resizing UILabel to fit with Word Wrap, чтобы текст соответствовал. Это работает, за исключением того, что текст сильно уменьшен и занимает примерно 50% ширины экрана.UILabel Multiline Text Scale Font To Fit With n

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

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; 
    } 
} 

example of text not fitting the view correctly

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

Благодаря

ответ

0

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

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