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