Вместо того, чтобы пытаться найти длину слов и найти размер для слов, вы можете добавить символ новой строки (\n
) после двух слов и отобразить его в метке, не изменяя размер метки или lineBreakMode .
- (NSString *)formatSentenceIntoTwoLines:(NSString *)sentence {
sentence = [sentence stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSArray *words = [sentence componentsSeparatedByString:@" "];
NSString *word_1 = [words objectAtIndex:0];
NSString *word_2 = [words objectAtIndex:1];
NSString *word_3 = [words objectAtIndex:2];
NSString *word_4 = [words objectAtIndex:3];
NSString *firstTwoWords = [word_1 stringByAppendingFormat:@" %@", word_2];
NSString *lastTwoWords = [word_3 stringByAppendingFormat:@" %@", word_4];
NSString *formattedSentence = [firstTwoWords stringByAppendingFormat:@"\n%@", lastTwoWords];
return formattedSentence;
}
Используйте вышеуказанный метод для форматирования строки. Код кажется слишком большим. Я пишу это так, чтобы было понятно. Вы все еще можете упростить это, как хотите.
И убедитесь, что для numberOfLines метки установлено значение 2
(метка будет отображать только две строки) или 0
(для динамического числа строк).
label.numberOfLines = 2; // 0 if there is going to be dynamic number of lines