将存储在字符串中的句子的单词初始化为UILabels

时间:2013-07-02 18:26:04

标签: ios objective-c ipad uilabel

每次点击UI按钮时,我都会尝试按句子的顺序将句子的单词初始化为UIlabels。

我还想识别不同标签中的句子何时接近屏幕的末尾,然后接下来的单词并将其放在句子单词下面的行中,如在Microsoft Word中按Enter键。

我已经尝试过这段代码但它会在同一个地方加载所有单词。

- (void)change:(id)sender 
{
    NSString *sentence = @"i am a boy with passion";
    NSArray *array = [sentence componentsSeparatedByCharactersInSet:
                       [NSCharacterSet characterSetWithCharactersInString:@" "]];

    CGFloat xVal = 11.0;

    for (NSString *words in array) {
        UILabel *labelText = [[UILabel alloc]initWithFrame:CGRectMake(xVal, 50, 300, 80)];

        labelText.layer.borderColor = [UIColor blueColor].CGColor;
        labelText.layer.borderWidth = 6.0;
        labelText.backgroundColor = [UIColor clearColor];
        labelText.textColor = [UIColor blackColor];
        labelText.font = [UIFont boldSystemFontOfSize:20.0f];
        labelText.text = words;
        xVal=+200;
        [self.view addSubview:labelText];
        [labelText setUserInteractionEnabled:YES];
         [labelText sizeToFit];

2 个答案:

答案 0 :(得分:1)

xVal=+200;表示xVal = 200。所以除了第一个标签以外所有其他人都有相同的来源。这就是为什么他们克服了。

用于查找标签是否移出界限 在for循环中初始化yVal

在循环内添加

   CGFloat width = [words sizeWithFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]].width;
    if (self.view.frame.size.width<xVal+width) {
        yVal+=50;
        xVal = 11;
    }
    UILabel *labelText = [[UILabel alloc]initWithFrame:CGRectMake(xVal, yVal, 300, 80)];

确保使用,a)在查找宽度时用于标签的字体,b)根据需要调整yVal中的增量。

别忘了将xVal=+200;更改为xVal+=200;

答案 1 :(得分:0)

你的问题就在这一行:

xVal=+200;

这与说xVal = 200相同;加号表示正200而不是200。试试这个:

xVal += 200;