【问题标题】:iOS >> UILabel: How to Create Lines Separator Relating to Words CountiOS >> UILabel:如何创建与字数相关的行分隔符
【发布时间】:2011-11-22 14:58:35
【问题描述】:

我使用在 IB 中定义为包括 2 行的 UILabel

文本本身来自代码:

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

字符串中总是有 4 个单词;我想确保在任何情况下,第一行总是有 2 个单词,第二行总是有 2 个单词,但是使用自动换行并不能解决问题,因为单词的长度取决于字符串。

如何定义 UILabel 将始终在第一行包含 2 个单词,在第二行包含 2 个单词?

【问题讨论】:

    标签: ios uilabel word-wrap


    【解决方案1】:

    您可以在两个单词之后添加一个换行符(\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
    

    【讨论】:

      【解决方案2】:

      尝试在第二个和第三个单词之间换行。请务必签出this post,因为有时在获取标签以根据字符串的来源识别换行符时会出现一些问题。

      另一个简单的选择是使用两个 UILabel,一个用于前两个单词,第二个放在它下面用于接下来的两个单词。

      【讨论】:

        【解决方案3】:

        我认为这篇文章可以帮助你打破线条:How to add line break for UILabel?

        如果你想计算单词,这个可以帮助你(也许你的字符串是动态获取的):What is the most efficient way to count number of word in NSString without using regex?

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

        希望这会有所帮助, 杰里米。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-26
          • 1970-01-01
          • 2017-08-11
          相关资源
          最近更新 更多