wake-up-neo.net

Swift 3 UIView-Animation

Seit der Aktualisierung meines Projekts auf Swift 3 funktionieren meine Animationsbeschränkungen für das automatische Layout nicht. Um genauer zu sein, fangen sie an der neuen Position, anstatt zu animieren.

UIView.animate(withDuration: 0.1,
               delay: 0.1,
               options: UIViewAnimationOptions.curveEaseIn,
               animations: { () -> Void in
                   constraint.constant = ButtonAnimationValues.YPosition.DefaultOut()
                   self.layoutIfNeeded()
    }, completion: { (finished) -> Void in
    // ....
})

Ich weiß, dass sie die UIViewPropertyAnimator-Klasse hinzugefügt haben, aber ich muss es noch probieren.

16
Alex Brown

Dieses Problem hatte ich auch mit dem neuesten Update von Swift 3. 

Um genau zu sein, wann immer Sie die Ansicht animieren möchten, rufen Sie eigentlich layoutIfNeeded in der Übersicht dieser Ansicht auf. 

Versuchen Sie es stattdessen:

UIView.animate(withDuration: 0.1,
           delay: 0.1,
           options: UIViewAnimationOptions.curveEaseIn,
           animations: { () -> Void in
               constraint.constant = ButtonAnimationValues.YPosition.DefaultOut()
               self.superview?.layoutIfNeeded()
}, completion: { (finished) -> Void in
// ....
})

Es scheint, als hätten sie in der Vergangenheit Nachsicht gehabt, die Ansicht, die Sie animieren möchten, einfach weiterzuleiten. Aber es ist in der Dokumentation, dass Sie wirklich LayoutIfNeeded im Überblick aufrufen sollten.

25
Enoch Ng

Upgrade auf Swift 3.0

Animation von rechts nach links anzeigen, wie bei der Apple-Standard-Push-Animation

//intially set x = SCREEN_WIDTH
view.frame = CGRect(x: ScreenSize.SCREEN_WIDTH, y: ScreenSize.SCREEN_HEIGHT - heightTabBar , width: ScreenSize.SCREEN_WIDTH, height: heightTabBar)

UIView.animate(withDuration: 0.50, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0, options: [], animations: {
 //Set x position what ever you want
                        view.frame = CGRect(x: 0, y: ScreenSize.SCREEN_HEIGHT - heightTabBar , width: ScreenSize.SCREEN_WIDTH, height: heightTabBar)

                    }, completion: nil)
8
Saumil Shah

Legen Sie zunächst den neuen Wert für Ihre Einschränkung fest und rufen Sie dann animieren auf.

self.YOUR_CONSTRAINT.constant = NEW_VALUE
UIView.animate(withDuration: 1.0) {
    self.view.layoutIfNeeded()
}
5
abdullahselek

Swift 3.1, Xcode 8.3.2

Dieser Code funktioniert gut für mich. Alle Änderungen in Ihrer Ansicht werden in Zeitlupe animiert.

UIView.animate(withDuration: 3.0, animations: { // 3.0 are the seconds

// Write your code here for e.g. Increasing any Subviews height.

self.view.layoutIfNeeded()

})
2

Swift 4, Xcode 10

Animation von rechts nach links für die Suche 

// Anfangs x = Ihre_Ansicht_Breite gesetzt

    viewOfSearch.frame = CGRect(x: viewOfSearch.frame.size.width, y: 0 , width: viewOfSearch.frame.size.width, height: 50)

    UIView.animate(withDuration: 0.50, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0, options: [], animations: {
        //Set x position what ever you want
        self.viewOfSearch.frame = CGRect(x: 0, y: 0 , width: self.viewOfSearch.frame.size.width, height: 50)

    }, completion: nil)
1
func setView(view: UIView) {
        UIView.transition(with: view, duration: 1.0, options: .transitionFlipFromTop, animations: {
        })
    }
  • ändern Sie den Optionsteil, um neue Animationen auf diesem bestimmten UIView anzuwenden.
0
Raghib Arshi