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 に答える