首页 > 解决方案 > UIView.animate 不在一个功能上制作动画

问题描述

我有两个为UIView. 一个是显示它,另一个是关闭视图。奇怪的是用于显示视图的动画正在工作,但用于解雇的动画却没有。

show()在视图被添加为子视图后立即被调用。

func show() {
    self.viewContainer.frame.origin.y = self.view.frame.height + 500
    UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseOut, animations: {
        self.viewContainer.frame.origin.y = self.view.frame.height
    }, completion: nil)
}

dismiss()使用UITapGestureRecognizer按下或按下按钮调用While 。

func dismiss() {
    self.overlay.isHidden = true
    self.viewContainer.frame.origin.y = self.view.frame.height
    UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseOut, animations: {
        self.viewContainer.frame.origin.y = self.view.frame.height + 500
    }) { (_) in
        self.view.removeFromSuperview()
    }
}

这里似乎有什么问题?

标签: iosswiftuiview

解决方案


你可以试试这个

func dismiss() {
 UIView.animate(withDuration: 0.2, delay: 0, options: .curveEaseOut, animations: {
     self.viewContainer.frame.origin.y = self.view.frame.height + 500
     self.overlay.isHidden = true
 }, completion: nil)
}

推荐阅读