iPad / iPhone - установите размер метки, который будет соответствовать данному прямоугольнику - PullRequest
2 голосов
/ 22 января 2011

В моем приложении для iPad у меня есть ярлык, который занимает весь вид. Я хочу динамически рассчитать размер метки, которая вписывается во весь прямоугольник. Но я хочу сохранить перенос слов. В моем XIB я добавил метку и установил ее в режим переноса слов.

См. Изображение прилагается. Я хочу показать ярлык с переносом слов. Может ли кто-нибудь помочь мне найти проблему?

Ниже приведен код, который я использую: (В одном из ответов на этих форумах я нашел следующий код:)

-(void)sizeLabel:(UILabel*)label toRect:(CGRect)labelRect withFont:(NSString*)fontName {

    // Set the frame of the label to the targeted rectangle
    label.frame = labelRect;

    // Try all font sizes from largest to smallest font size
    int fontSize = 300;
    int minFontSize = 5;

    // Fit label width wize
    CGSize constraintSize = CGSizeMake(label.frame.size.width, MAXFLOAT);

    do {
  // Set current font size
  label.font = [UIFont fontWithName:fontName size:fontSize];

  // Find label size for current font size
  CGSize labelSize = [[label text] sizeWithFont:label.font
      constrainedToSize:constraintSize
      lineBreakMode:UILineBreakModeWordWrap];

  // Done, if created label is within target size
  if( labelSize.height <= label.frame.size.height )
   break;

  // Decrease the font size and try again
  fontSize -= 2;

    } while (fontSize > minFontSize);
}

alt text

1 Ответ

2 голосов
/ 03 февраля 2011

Итак, вы пытаетесь получить текст для переноса по словам, но с максимально возможным размером? В этом случае выполните:

//With the line break mode set to wordwrap and number of lines set to 1.
[label adjustsFontSizeToFitWidth:YES];
//set max font
label.font = [UIFont fontWithName:fontName 300];
[label setMinimumFontSize:5];

И это все, что вам нужно сделать.

...