iOS >> UILabel: как создать разделитель строк по количеству слов - PullRequest
0 голосов
/ 22 сентября 2011

Я использую UILabel, которая определена в IB как включающая 2 строки

enter image description here

Сам текст идет из кода:

[self.myUILabel setText:[someDictionaryThatHoldsNSStrings objectForKey:someDictionaryKey]];

В строке всегда 4 слова; Я хочу убедиться, что в любом случае всегда будет 2 слова в первой строке и 2 слова во второй строке, но использование переноса слов не помогает, поскольку длина слова зависит от строки. 1009 *

Как мне определить, что UILabel всегда будет содержать 2 слова в первой строке и 2 слова во второй строке?

Ответы [ 3 ]

1 голос
/ 22 сентября 2011

Вместо того, чтобы пытаться найти длину слов и найти размер для слов, вы можете добавить символ новой строки (\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
0 голосов
/ 22 сентября 2011

Я думаю, что этот пост может помочь вам, для разбивки строк: Как добавить разрыв строки для UILabel?

И этот может помочь вам, если вы хотите считать слова (возможно, весли ваша строка получена динамически): Какой самый эффективный способ подсчета количества слов в NSString без использования регулярного выражения?

Вам следует установить для свойства numberOfLines вашей UILabel значение 0. (неограниченное количество строк).После этого, я думаю, вы должны посчитать слова в вашей NSString (с помощью NSScanner или этот метод ) и динамически добавить символ "\ n" после второго слова.

Надеюсь, это поможетДжереми.

0 голосов
/ 22 сентября 2011

Попробуйте поставить разрыв строки между вторым и третьим словом. Обязательно извлекайте этот пост , потому что иногда возникают некоторые проблемы с получением метки для распознавания разрыва строки на основе источника строки.

Другой простой вариант - использовать две метки UILabel, одну для первых двух слов и другую, расположенную под ней для следующих двух слов.

...