0

2つUILabelのs(labelOnelabelTwo)があり、2つのラベル間でクロスフェードする必要があるとします。この効果を達成するための最良の方法は何ですか?

[UIView beginAnimations:@"crossFade" context:nil];などを使用してフェードアウトしてからフェードインしようとしlabelOneましlabelTwoたが、両方のラベルの不透明度が低く、両方が透けて見える場合は、かなり目立つギャップがあります。代わりに、きれいなクロスフェード効果が必要です。使う必要がある気がしますCABasicAnimationが、少し指導をお願いします。前もって感謝します!

4

3 に答える 3

2

これにより、一方のラベル(または任意のビュー)がフェードアウトし、もう一方のラベルがフェードインします。アニメーションの途中で、両方とも50%の不透明度になります。アルファを個別に制御するには、ラベルごとに個別のアニメーションを使用し、そのうちの1つを遅らせます。

label_to_show.alpha = 0.0;
label_to_hide.alpha = 1.0;

[UIView beginAnimations:nil context:nil];

label_to_show.alpha = 1.0;
label_to_hide.alpha = 0.0;

[UIView commitAnimations];
于 2010-12-22T08:41:24.537 に答える
0

アニメーションカーブをいじって許容できる外観を見つけることもできますが、フェードが発生している間、背景の外観を維持するために、両方のラベルの下に3番目のビューを維持する方がよいと思います。

両方のラベルが同時にフェードしないが、ラベルが不明瞭になり始めるポイントまですばやくフェードすることを意味する場合は、同じフェードレベルの新しいラベルと交換してから、すばやくフェードアップします。完全な可視性。

「フェード」と言いますが、ラベルの上に背景色のビューを配置し、そのビューをより不透明にし、下のラベルを切り替えてから、再び透明にフェードすることも非常に見栄えがします。

于 2010-12-22T08:05:39.783 に答える
0

私はこのようなものを実装しました、そしてそれは非常にうまくいきます。

[UIView transitionWithView:self duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    _label1.hidden = YES;
    _label2.hidden = NO;
} completion:nil];
于 2013-09-03T16:25:30.853 に答える