iOS 13替代“ setAnimationCurve”

时间:2019-10-25 15:48:09

标签: ios swift uikit ios13 ios-animations

使用iOS 13 Apple 已过时,我在应用中一直使用的许多功能。对于它们中的大多数,在StackOverflow上已经有很好的解释了-但是' setAnimationCurve '却没有。

  

'setAnimationCurve'在iOS 13.0中已弃用:使用基于块的   动画API代替

这是我的确切代码:

  // MARK: - Keyboard up/down adjustment for the addMediaBar

@objc func keyboardWillShow(notification: NSNotification) {

    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {

        let userInfo = notification.userInfo! as [AnyHashable: Any]

        let animationDuration = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! NSNumber

        let animationCurve = userInfo[UIResponder.keyboardAnimationCurveUserInfoKey] as! NSNumber



        if addMediaBarBottomAnchor.constant == 0 {

            let window = UIApplication.shared.windows.filter {$0.isKeyWindow}.first



            if let bottomPadding = window?.safeAreaInsets.bottom {

                print(keyboardSize.height)

                print(bottomPadding)



                UIView.setAnimationCurve(UIView.AnimationCurve(rawValue: animationCurve.intValue)!)

                UIView.animate(withDuration: animationDuration.doubleValue) {

                    self.addMediaBarBottomAnchor.constant = -keyboardSize.height + bottomPadding

                    self.view.layoutIfNeeded()

                }



            } else {

                UIView.setAnimationCurve(UIView.AnimationCurve(rawValue: animationCurve.intValue)!)

                UIView.animate(withDuration: animationDuration.doubleValue) {

                    self.addMediaBarBottomAnchor.constant = -keyboardSize.height

                    self.view.layoutIfNeeded()

                }

            }



        }

    }

}

每当键盘出现时,我都会使用此代码在屏幕底部向上/向下滑动一个栏

非常感谢您提供有关此主题的帮助。

1 个答案:

答案 0 :(得分:1)

如果您想要内置的动画曲线,请致电

animate(withDuration:delay:options:animations:completion:)

通过options:,您可以添加动画曲线。

但是更好的选择是根本不使用UIView类动画调用。使用UIViewPropertyAnimator。现在,您可以应用任何喜欢的动画曲线。