iOS - Animieren der Änderung der Textgröße in UILabel oder UITextView?

8

In einer Anwendung, die Textabschnitte enthält, wird die Schriftgröße erhöht, wenn das Gerät in eine Querformat-Ausrichtung gedreht wird. Ich mag es nicht, wie es die ganze Animation macht und dann plötzlich auf die neue Größe springt, also möchte ich die Größenänderung über den Verlauf der Drehung animieren.

Ich habe irgendwo gelesen, dass die Änderung in einem UIView -Animationsblock nicht funktioniert, weil die Font-Eigenschaft nicht animierbar ist. Was sind meine Optionen dafür?

Für meine spezifische Implementierung skaliere ich nicht einfach das UILabel / UITextView so wie es ist; Die Grenzen der Box nehmen proportional zur Schriftgröße zu, so dass im Text ein neuer Fluss entsteht. Das ist okay für mich.

Edit: Es wäre in Ordnung, einfach die UITextView zu skalieren.

Ich habe auch darüber nachgedacht, es manuell zu "animieren": Ich habe eine Methode, die meine Ansichten auslegt und die Schriftgröße anpasst. Wenn ich wüsste, wann die Drehung beginnen würde und wie lange die Animation dauern würde, könnte ich sie so einstellen, dass sie eine mittlere Schriftgröße oder zwei in der Mitte der Animation darstellt. Jede Hilfe mit dem Erhalten dieser würde geschätzt werden.

    
kbanman 31.07.2010, 03:34
quelle

4 Antworten

6
  

Wenn ich wüsste, wann die Rotation war   zu beginnen, und die Dauer der   Animation ...

Lustig, das solltest du erwähnen. Kurz bevor die Animation gestartet wird, erhält Ihr View-Controller eine willAnimateRotationToInterfaceOrientation:duration: -Nachricht, die genau die Informationen enthält, die Sie benötigen.

    
Daniel T. 17.03.2011, 11:37
quelle
6

Eine Option besteht darin, den alten Text auszublenden, die Schriftgröße zu ändern und wieder einzublenden. Die Font-Eigenschaft ist möglicherweise nicht animierbar, aber Alpha ist. Da Alpha eine Eigenschaft von UIView ist, können Sie alle Ihre Text tragenden Ansichten auf die gleiche Weise behandeln: UILabel, UITextView usw. Es sieht auch gut aus.

    
Caleb 15.03.2011 18:22
quelle
4

Eine Vorgehensweise könnte sein:

  1. Erstellen Sie eine CAKeyframeAnimation
  2. Definieren Sie die Skalierung und Drehung, die Sie während dieser Animation erreichen möchten, mithilfe einer Reihe von CATransform3D-Objekten
  3. Fügen Sie diese Transformationen Ihrer Keyframe-Animation hinzu
  4. Senden Sie die Nachricht addAnimation an Ihr Label-Layer-Objekt: [[label layer] addAnimation] ;

Hier wäre ein Codebeispiel, das annimmt, dass yourLabel das UILabel ist, das Sie skalieren und drehen möchten:

%Vor%

Dies ist normalerweise der Fall, wenn ein umherlaufender Text animiert wird.

Sie können dies starten, wenn sich das Gerät dreht und die Animation nach der Drehung wieder aufruft, damit Sie Ihr Etikett mit der richtigen Skalierung / Position aktualisieren können.

Sie müssen stimmen, um das richtige Timing und die korrekte Drehung zu finden.

    
MiKL 16.03.2011 15:31
quelle
1

Ändern Sie die Schriftgröße, wenn didAnimateFirstHalfOfRotationToInterfaceOrientation: aufgerufen wird. Auf diese Weise wird der Benutzer die Änderung nicht sehen, sobald die Rotation abgeschlossen ist. Es wäre ziemlich schwer zu sehen, wie sich die Schriftgröße ändert, da die Rotation stattfindet!

    
Benjamin Deming 31.07.2010 06:23
quelle

Tags und Links