IOS 错误的动画显示

IOS wrong animation displaying

我有一个高度为 increasing/decreasing 的动画(用于隐藏和显示 UIDatePicker)。增加它应该的工作,但我有一些减少的问题。 UIDatePicker 缩小并且动画几乎从顶部开始,接近过程结束,并开始延迟减少。但如果包括延迟,它仍然需要与增加相同的时间。

增加UIDatePicker

开始减少

我的 viewWillLayoutSubviews() 方法

    override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()
    frameDatePicker = remindDatePicker.frame
    zeroFrameDatePicker = CGRect(x: (frameDatePicker?.origin.x)!, y: (frameDatePicker?.origin.y)!, width: (frameDatePicker?.width)!, height: 0)
    if reminderSwitch.isOn {
        remindDatePicker.frame = frameDatePicker!
    } else {
        remindDatePicker.frame = zeroFrameDatePicker!
    }
}

我的 showDatePicker() 动画方法

    func showDatePicker() {
    UIView.animate(withDuration: animateTime, animations: {
            self.remindDatePicker.frame = self.frameDatePicker!
    })  
}

我的 hideDatePicker() 动画方法

func hideDatePicker() {
    UIView.animate(withDuration: animateTime, animations: {
        self.remindDatePicker.frame = self.zeroFrameDatePicker!
    })
}

我怀疑这里真正的问题是选择器(例如日期选择器)的高度不是零(或者任何非常小的高度,真的)。如果我是你,我会想出一种完全不同的方法来使这个选择器进入和退出可见存在。

Apple 在类似日历应用程序中所做的是将选择器保持在其正常的固定高度,但会增大和缩小其超级视图,其 clipsToBounds 为真。因此,选择器似乎会变大和变小,但实际上并非如此。