今私はUILabelのテキストを表示するために割り当てられた各番号で乱数を生成するボタンのIBActionを持っています。ちょうど表示されるのではなく、テキストがフェードインされるか、他の興味深いアニメーションもすばらしくなります。これを実現させる簡単な方法を誰かが知っていますか?UILabelにテキストをフェードインするにはどうすればよいですか?
今私は、次のコードは、お使いのラベルに影響をフェージングあなたを与えるだろう
labelMain.text = @"my text";
今私はUILabelのテキストを表示するために割り当てられた各番号で乱数を生成するボタンのIBActionを持っています。ちょうど表示されるのではなく、テキストがフェードインされるか、他の興味深いアニメーションもすばらしくなります。これを実現させる簡単な方法を誰かが知っていますか?UILabelにテキストをフェードインするにはどうすればよいですか?
今私は、次のコードは、お使いのラベルに影響をフェージングあなたを与えるだろう
labelMain.text = @"my text";
を使用しています。
- (IBAction)buttonClicked:(UIButton *)sender
{
labelMain.alpha = 0;
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
animations:^{ labelMain.alpha = 1;}
completion:nil];
}
これを試してみてください:
[labelMain setAlpha:0];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.8];
[labelMain setAlpha:1];
[UIView commitAnimations];
期間を変更することは非常に簡単です - ちょうどコードの値0.8
を調整します。
ブロックはより強力です。 animateWithDurationのbeginAnimationsを削除することを検討する必要があります。 – rdurand
label.text = @"old text";
[UIView animateWithDuration:0.4 animations:^{
label.alpha = 0.0f;
} completion:^(BOOL finished) {
label.text = @"next text";
[UIView animateWithDuration:0.4 animations:^{
label.alpha = 1.0f;
} completion:^(BOOL finished) {
NSLog(@"finished transition");
}];
}];
// fade out the current value
[UIView animateWithDuration:0.2
delay:0
options:0
animations:^{
labelMain.alpha = 0.0f;
}
completion:^(BOOL finished) {
// set the new value and fade in
labelMain.text = newValue;
[UIView animateWithDuration:0.2
delay:0
options:0
animations:^{
labelMain.alpha = 1.0f;
}
completion:nil];
}];
これは、私はこれが(11ヶ月)ビット古いですけど、私はそれが掲示他のアプローチに代わるものを言及する価値だと思うクロスフェードアニメーション
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseOut
animations:^{
labelMain.alpha = 0;
[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn
animations:^{ labelMain.alpha = 1;}
completion:nil];
} completion:nil];
のようになります。私はより良い解決策であると感じています。このようなUIView transitionWithView:duration:options:animations:completion
クラスレベルのメソッドの
メイクの使用、:
NSTimeInterval duration = 0.5f;
[UIView transitionWithView:labelMain
duration:duration
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
labelMain.text = @"new value";
} completion:nil];
これは、クロスフェードをしますlabelMain.text
に「新しい価値」の前の値から。
このアプローチは、たとえばUIImageViewの画像を変更するなどの他のビュー値でも機能します。
トピックについては、Apple's docsを参照してください。
同じスーパービューで多くのラベルをアニメーション化したい場合は、 'transitionWithView'引数でスーパービューを使用してください。 –
これが最良の方法です。なぜこれが受け入れられた答えではないか分からない。 –
ありがとうございました!これは最初のもので、魅力のように機能しました!非常にシンプルで簡単に時間を調整し、遅延を追加する! – Herbie999
喜んで助けてください:) @ Herbie999 –