2013-01-18 2 views
2

Я хочу, чтобы изменить размер текста UILabel с помощью numberOfLines> 1. Ширина и высота UILabel должны быть исправлены. Есть ли лучшее решение вместо подсчета символов и установки размера вручную? Я использую iOS6.Авто изменить размер текста MULTILINE UILabel

+0

Пожалуйста, обратитесь this previous SO answer pradeepa

+0

см http://agilewarrior.wordpress.com/2012/06/15/how-to-multiline-label-ios-objective-c/ –

+0

вы можете сделать это программно, iOS не регулирует размер шрифта для многострочных представлений UILabel. – holex

ответ

4

Я изменил решение, которое я нашел. Это может быть использовано в настоящее время в UITableViewCell:

- (void)resizeFontForLabel:(UILabel*)aLabel maxSize:(int)maxSize minSize:(int)minSize lblWidth: (float)lblWidth lblHeight: (float)lblHeight { 
    // use font from provided label so we don't lose color, style, etc 
    UIFont *font = aLabel.font; 

    // start with maxSize and keep reducing until it doesn't clip 
    for(int i = maxSize; i >= minSize; i--) { 
     font = [font fontWithSize:i]; 
     CGSize constraintSize = CGSizeMake(lblWidth, MAXFLOAT); 

//  NSString* string = [aLabel.text stringByAppendingString:@"..."]; 
     CGSize labelSize = [aLabel.text sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:aLabel.lineBreakMode]; 

     if(labelSize.height <= lblHeight) 
      break; 
    } 

    // Set the UILabel's font to the newly adjusted font. 
    aLabel.font = font; 

} 
0

В приведенной ниже строке кода даст вам полный размер строки:

CGSize labelSize = [labelString sizeWithFont:label.font constrainedToSize:label.contentSize]; 
Смежные вопросы