1

ストーリーボード経由でラベルを作成しました。順序は次のようになります: ビュー -> スクロール ビュー -> ラベルの束。

実現したいテキスト出力は次のとおりです。12月2日<残り30日>

<> で囲まれたテキストは小さい文字で、別の UI ラベルにあります。

月名は動的で幅が変わるため、CGRectMake を使用して <> で囲まれたテキストの位置を変更しようとしました。しかし、それは機能していません。関数のパラメーターを変更しようとしましたが、ラベルはそのままです。絵コンテで設定した初期位置から動かない。

label_days_left.frame = CGRectMake(50, 10, 100, 99);

編集:

- (void) alignDaysLeft{
    //code to align the label just after the match date
    CGFloat dateLabelWidth = [label_date.text sizeWithFont:label_date.font].width;
    CGFloat dateLabelHeight = [label_date.text sizeWithFont:label_date.font].height;
    CGFloat someGap = 0;
    CGFloat daysLeftX = label_date.frame.origin.x + dateLabelWidth + someGap;
    CGFloat daysLeftY = label_date.frame.origin.y;
    [label_date sizeToFit];
    //label_days_left.frame = CGRectMake(daysLeftX, daysLeftY, 100, dateLabelHeight);
    label_days_left.frame = CGRectMake(50, 10, 100, 99);
    label_days_left.text = [NSString stringWithFormat:@"lolo"];
    NSLog(@"date width - %f", daysLeftX);

}

label_date は、月と日を含む変数です。label_days_left は、月の隣に配置しようとしているラベル変数です。

編集2: フレーム

編集 3: 新しいプロジェクトを作成しました。ビューにラベルをドラッグしました。アウトレットを作りました。合成しました。

そして、次のコードを使用して移動しました-

[labia setFrame:CGRectMake(0, 100, 5, 99)];

うまくいきませんでした。私は何の間違いをしているのですか?

4

2 に答える 2

8

オートレイアウトがオンになっていませんか? その場合は、AutoLayout でフレームを設定することを心配する必要はなく、代わりに制約を設定する必要があるため、それが問題になる可能性があります。

于 2013-05-27T23:39:28.420 に答える
1
NSString *someString = [NSString stringWithFormat:@"%@",label_date.text]
UIFont *yourFont = [UIFont systemFontOfSize:22.0];
CGSize stringBoundingBox = [someString sizeWithFont:yourFont];
[label_days_left setFrame:CGRectMake(label_days_left.frame.origin.x, 10, stringBoundingBox.width, 99)];
[label_days_left setText:someString];

ぜひ一度お試しください。...

于 2013-05-27T06:41:24.373 に答える