Blog

iOS - Beispiel eines Animationsfehlers

Jeroen Leenarts

Aktualisiert Oktober 22, 2025
2 Minuten

Vor einiger Zeit sind wir auf eine interessante Animationsstörung gestoßen. Die eigentliche Lösung ist ganz einfach. Hier ist die Ursache des Problems. Eine Tabellenansicht konnte in einen Bearbeitungsmodus umgeschaltet werden. Bei dieser Umschaltung wurde ein Etikett aus der Ansicht heraus animiert und ausgeblendet. Seltsamerweise änderte sich die Schriftgröße dieser Beschriftung genau in der Sekunde, bevor die eigentliche Animation begann.Glücklicherweise konnten wir dieses Problem beheben.Wie sich herausstellte, war die eigentliche Beschriftung eine Beschriftung mit einer dynamischen Schriftgröße. Prüfen Sie die Eigenschaft "adjustsFontSizeToFitWidth" bei einem UILabel.Während der Animation. Die Beschriftung wurde nicht nur verschoben, sondern auch um ein paar Pixel in der Größe verändert. Ich habe ein Beispiel erstellt, das genau dieses Problem auf dem zweiten View Controller meines Beispielprojekts unter github.com/xebia/ios-DemoForBlog demonstriert.

Prüfen Sie die Datei XSDSecondViewController https://github.com/xebia/ios-DemoForBlog/blob/master/DemoForBlog/XSDSecondViewController.m für Details. Das grundlegende Problem wird in diesem Codeausschnitt gezeigt: [sourcecode language="c"] -(IBAction) animateButtonPressed:(id)sender { NSLog(@"%@", Absender); [UIView animateWithDuration:2.0 animations:^{ CGRect frame = animatedLabel.frame; if(frame.origin.x != 10) { frame.origin.x = 10; } sonst { frame.origin.x = 100; } if (self.shouldGlitch) { if (frame.size.width == 150.0) { frame.size.width = 155.0; } sonst { frame.size.width = 150.0; } } animatedLabel.frame = frame; }]; } [/sourcecode] Die Eigenschaft shouldGlitch ist ein BOOL, das durch einen Schalter auf dem Bildschirm umgeschaltet wird. Laden Sie den Code herunter und probieren Sie ihn aus, zweite Registerkarte nach dem Start der Anwendung.

Verfasst von

Jeroen Leenarts

Contact

Let’s discuss how we can support your journey.