0

Angenommen, ich habe zwei UILabel s (labelOne und labelTwo) und ich muss zwischen den beiden Etiketten überblenden. Was ist der beste Weg, um diesen Effekt zu erzielen?Cross-Fade zwischen zwei UILabels

Ich habe versucht, [UIView beginAnimations:@"crossFade" context:nil]; usw. mit labelOne Fade-out und dann Fade-in labelTwo aber es ist eine ziemlich bemerkbar Lücke, wenn beide Markierungen auf einem niedrigen Opazität und Sie können sowohl sehen durch. Ich brauche stattdessen einen schönen, sauberen Überblendeffekt. Ich habe das Gefühl, dass ich CABasicAnimation verwenden muss, aber ich würde einige Anleitung schätzen. Danke im Voraus!

Antwort

2

Dadurch wird ein Label (oder eine andere Ansicht) ausgeblendet, während das andere eingeblendet wird. Nach der Hälfte der Animation haben beide eine Deckkraft von 50%. Um das Alpha separat zu steuern, verwenden Sie für jedes Label eine separate Animation und verzögern Sie eine davon.

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]; 
0

Sie könnten mit der Animationskurve herumspielen und versuchen, ein akzeptables Aussehen zu finden, aber ich denke, Sie werden es besser machen, nur eine dritte Ansicht unter den beiden Beschriftungen beizubehalten, um das Hintergrundbild während der Fades zu erhalten.

Wenn Sie meinen, dass Sie beide Etiketten gleichzeitig sehen können, verblassen Sie nicht gleichzeitig, sondern blenden Sie schnell zu einem Punkt, an dem die Beschriftung unklar wird, ersetzen Sie sie durch die neue Beschriftung mit der gleichen Fade-Ebene und dann verblassen es schnell zur vollen Sichtbarkeit.

Ich sage "Fade", aber es könnte auch sehr gut aussehen, eine Hintergrundfarbe oben auf die Etiketten zu setzen und diese Opaque undurchsichtiger zu machen, die darunter liegenden Labels zu wechseln und dann wieder transparent zu machen.

+0

Danke Adam. Gibt es einen eleganteren Weg um dieses Problem zu lösen, als zusätzliche Ansichten zu verwenden? Ich habe 'CABasicAnimation' erwähnt, da ich einige Leute gesehen habe, die über die Verwendung des @" Opazitäts "-Schlüssels sprechen, um eine erfolgreiche Überblendung zwischen" UILabels "durchzuführen, aber ich bin nicht sicher, wie ich diese Methode angehen soll. – Skoota

+0

drawonwards obige Lösung benutzt die Eigenschaft .alpha, um das zu tun, was ich beschrieben habe. Ich bin nicht sicher, wie der Deckkraft-Schlüssel es sehr unterschiedlich aussehen lassen würde. Ist das genaue Problem, dass die Beschriftungen den Hintergrund durchscheinen lassen, wenn die Überblendung wie beschrieben durchgeführt wird? Wenn dem so ist, denke ich, dass eine dritte Sichtweise vielleicht nicht erstaunlich clever ist, aber es ist keine große Anstrengung und sollte die Ergebnisse bringen. –

0

Ich habe so etwas implementiert und es funktioniert sehr gut.

[UIView transitionWithView:self duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ 
    _label1.hidden = YES; 
    _label2.hidden = NO; 
} completion:nil];