Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS>&燃气轮机;UILabel:如何创建与字数相关的行分隔符_Ios_Uilabel_Word Wrap - Fatal编程技术网

iOS>&燃气轮机;UILabel:如何创建与字数相关的行分隔符

iOS>&燃气轮机;UILabel:如何创建与字数相关的行分隔符,ios,uilabel,word-wrap,Ios,Uilabel,Word Wrap,我使用的UILabel在IB中定义为包含两行 文本本身来自代码: [self.myUILabel setText:[someDictionaryThatHoldsNSStrings objectForKey:someDictionaryKey]]; 字符串中始终有4个单词;我想确保在任何情况下,第一行中总是有2个单词,第二行中总是有2个单词,但是使用换行符并不能起到作用,因为单词的长度取决于字符串 如何定义UILabel在第一行中始终包含两个单词,在第二行中始终包含两个单词 试着在第二个单词

我使用的UILabel在IB中定义为包含两行

文本本身来自代码:

[self.myUILabel setText:[someDictionaryThatHoldsNSStrings objectForKey:someDictionaryKey]];
字符串中始终有4个单词;我想确保在任何情况下,第一行中总是有2个单词,第二行中总是有2个单词,但是使用换行符并不能起到作用,因为单词的长度取决于字符串


如何定义UILabel在第一行中始终包含两个单词,在第二行中始终包含两个单词

试着在第二个单词和第三个单词之间划一个换行符。请确保签出,因为有时让标签根据字符串源识别换行符会出现一些问题


另一个简单的选择是使用两个UILabel,一个用于前两个单词,另一个用于后两个单词。

您可以添加一个换行符(
\n
)而不是试图查找单词的长度和大小在两个单词后添加字符,并在标签中显示,而不改变标签的大小或lineBreakMode

使用上述方法格式化字符串。代码似乎太大了。我这样写只是为了让它容易理解。您仍然可以根据需要简化它

并确保标签的行数设置为
2
(标签仅显示两行)或
0
(用于动态行数)


我认为这篇文章可以帮助你打破界限:

如果您想计算字数(可能是在动态获取字符串的情况下),这个函数可以帮助您:

您应该将UILabel的numberOfLines属性设置为0。(不限行数)。之后,我认为您应该计算NSString中的单词数(使用NSScanner或),并在第二个单词后动态添加“\n”字符

希望这有帮助, 杰瑞米

- (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;
}
label.numberOfLines = 2; // 0 if there is going to be dynamic number of lines