Änderungen während der Gerätedrehung basierend auf dem Größenelement werden nach Abschluss der Drehung animiert.

Ich habe eine dynamische Konfiguration von Schaltflächen, deren Breite und Höhe automatisch an die in einem Storyboard festgelegten Einschränkungen für das automatische Layout angepasst werden. Im Hochformat haben die Tasten die gleiche Breite und Höhe, sodass der Rahmen perfekt quadratisch ist. Wenn Sie das Gerät zum Querformat drehen, werden die Tasten kürzer und breiter. Ich habe gesetztcornerRadius auf den Ebenen der Schaltflächen, so dass sie im Hochformat perfekt kreisförmig sind, und das funktioniert gut, aber wenn ich zum Querformat drehe, sieht der Eckenradius offensichtlich nicht mehr richtig aus. Ich muss das ändern, damit es ein Oval wird. Das Problem ist, egal wo ich diesen Code versuche, ich kann nicht die richtige Breite und Höhe bekommen, die die Knöpfe haben, nachdem die Drehung erfolgt ist. Ich möchte, dass dies geschieht, während das Gerät gedreht wird. Warten Sie nicht, bis die Drehung abgeschlossen ist. Idealerweise dascornerRadius würde die Änderung animieren, während der Übergang animiert wird.

Wenn ich benutzeviewWillLayoutSubviews oderviewDidLayoutSubviews wird beim Starten der App der Schaltflächenrahmen korrekt angezeigt. Beim Drehen in das Querformat wird diese Methode jedoch aufgerufen, bevor der Rahmen der Schaltfläche für die neue Ausrichtung aktualisiert wird, sodass der richtige Eckenradius nicht berechnet werden kann.

Wenn ich benutzeviewWillTransitionToSize:withTransitionCoordinator: oderwillTransitionToTraitCollection:withTransitionCoordinator: oderwillRotateToInterfaceOrientation, es wird nicht aufgerufen, wenn die App gestartet wird, und beim Drehen des Geräts wird es aufgerufen, bevor der Frame für die neue Größe aktualisiert wird.

Wenn ich benutzewillAnimateRotationToInterfaceOrientation wird beim Start der App nicht aufgerufen, aber beim Drehen des Geräts wird der neue Schaltflächenrahmen korrekt angezeigt. Diese Methode ist jedoch veraltet.

So ist die Frage, mit welcher Methode Sie die Eigenschaften einer Schaltfläche basierend auf der Größe festlegen können, die die Schaltfläche nach Abschluss der Drehung haben wird, die aufgerufen wird, bevor die Drehung abgeschlossen ist?

Beachten Sie, dass es für jede Änderung der Ausrichtung aufgerufen werden muss, nicht nur für Änderungen der Größenklasse (rotierendes iPad ändert die Größenklasse nicht). Ich muss nur iOS 8.0 + unterstützen.

Dies ist der Code, den ich in die Methoden einfüge, um zu wissen, ob er die richtige Größe hat:

println("\(button.frame.size.width) x \(button.frame.size.height)")

Antworten auf die Frage(4)

Ihre Antwort auf die Frage