0

私はiPhoneアプリに取り組んでおり、30秒ごとに変更したいUILabelを持っていますが、同じフレームを保持して、1つが消えてから別のフレームが表示されるようにします。このコードでは、すべてのラベルが一度に描画され、終了します。私もARCを使っています。

-(void)viewDidLoad
{
    [super viewDidLoad];
    label1= [[UILabel alloc] initWithFrame:CGRectMake(80, 200, 100, 50)];
    label1.text=@"test";
    label1.backgroundColor= [UIColor clearColor];

    [self.view addSubview:label1];

    label2= [[UILabel alloc] initWithFrame:CGRectMake(80, 200, 100, 50)];

    label2.text=@"change";

    label2.backgroundColor= [UIColor clearColor];
    [self.view addSubview:label2];
...

    warmup = [[NSMutableArray alloc] initWithObjects:label1,label2,label3, nil];

    timer=[NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(rotatewarmup )userInfo:nil repeats:YES];
}


-(void)rotatewarmup
{

        for (NSUInteger i = 0; i < [warmup count]; i++) {

        UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(80, 200, 100, 50)];

        label.textColor=[UIColor whiteColor];

        label.text =[warmup objectAtIndex:i];

        NSString*string=[[NSString alloc] initWithFormat:@"%i"];
        [label setText:string];

        [self.view addSubview: label];
}
4

2 に答える 2

3

1 つのラベルを作成し、タイマーを使用してテキストを変更するメソッドを呼び出す (必要に応じてコア アニメーションを使用してアニメーション化する)、または 2 つのオプションがあります。

2 つのラベルを作成し、タイマーを使用して、一方のアルファを 0 に変更し、もう一方のアルファを 1 に変更するメソッドを呼び出すことができます (やや非効率的ですが)。

ここでも、アニメーション ブロックを使用して、このプロセスが不快にならないようにすることができます。

これらの手順について詳しく説明する必要がある場合はお知らせください。

于 2013-10-29T14:26:31.287 に答える