0

每次单击 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];
4

2 回答 2

1

xVal=+200;表示 xVal=200。因此,除了第一个标签之外,所有其他标签都具有相同的来源。这就是为什么他们过去了。

用于查找标签是否移出边界初始化yVal外部 for 循环,

在循环内添加

   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;

于 2013-07-02T19:53:39.883 回答
0

你的问题是这一行:

xVal=+200;

这和说的一样xVal = 200;加号表示正数 200 而不是 200 以上。试试这个:

xVal += 200;
于 2013-07-02T19:48:35.573 回答