2

我正在尝试在两个 UILabel 之间分隔很长的文本以环绕图像。我已经重新使用并改编了该项目的前任开发人员留下的一些代码,如下所示......

字符串(连续数字单词,1 到 20):

NSString *sampleString = @"One two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty. One two three four five six seven eight nine ten. Eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty.";

分割方法...

-(void)seperateTextIntoLabels:(NSString*) text
{
    // Create array of words from our string
    NSArray *words = [text componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" "]];

    //Data storage for loop
    NSMutableString *text1 = [[NSMutableString alloc] init];
    NSMutableString *text2 = [[NSMutableString alloc] init];

    for(NSString *word in words)
    {
        CGSize ss1 = [[NSString stringWithFormat:@"%@ %@",text1,word] sizeWithFont:descriptionLabel.font constrainedToSize:CGSizeMake(descriptionLabel.frame.size.width, 9999) lineBreakMode:descriptionLabel.lineBreakMode];

        if(ss1.height > descriptionLabel.frame.size.height || ss1.width > descriptionLabel.frame.size.width)
        {
            if( [text2 length]>0)
            {
                [text2 appendString: @" "];
            }
            [text2 appendString: word];
        }
        else {
            if( [text1 length]>0)
            {
                [text1 appendString: @" "];
            }
            [text1 appendString:word];
        }

    }
    descriptionLabel.text = text1;
    descriptionLabelTwo.text = text2;

    [descriptionLabel sizeToFit];
    [descriptionLabelTwo sizeToFit];

}

它或多或少地像我预期的那样工作,只是在切换发生的时候它变得混乱。

在此处输入图像描述

请注意标签 1 'One' 中的最后一个单词放错了位置。在第二个标签的中途也缺少这个词。除了这个问题之外,它似乎工作正常。

关于这里发生了什么的任何想法?

有没有其他解决方案?请注意,我宁愿不使用 UIWebView(主要是因为屏幕渲染的延迟)。

4

1 回答 1

2

好吧,这是你的问题。

您正在检查字符串中的每个单词是否适合第一个标签,然后检查它是否不适合。它进入第二个。直到“十二”,它都适合第一个标签。但是你希望其余的字符串落入第二个标签,对吗?

好吧,在您的检查中,即使在您拆分到第二个标签之后,您也会继续检查每个单词是否也适合第一个标签。“一个”是第一个仍然适合第一个标签的单词,因此将其放置在那里,然后继续将其他单词放置在第二个标签中。

要解决这个“奇怪”的拆分问题,您可以让自己成为一个布尔值,当您将第二个标签拆分为“YES”(或您喜欢的真值)并确保检查该布尔值是否打开为以及检查尺寸。

我希望这一切现在对你有意义。

祝你好运。

于 2012-08-22T09:25:31.937 回答