我有两种方法:
private func showPicker() {
UIView.animate(withDuration: 0.3,
animations: {
var pickerFrame = self.vPickerWrapper.frame
pickerFrame.origin.y = self.view.frame.size.height - 300.0
self.vPickerWrapper.frame = pickerFrame
self.bIsShowingPicker = true
self.view.layoutIfNeeded()
self.view.updateConstraintsIfNeeded()
})
}
private func closeThePicker() {
UIView.animate(withDuration: 0.3,
animations: {
var pickerFrame = self.vPickerWrapper.frame
pickerFrame.origin.y = self.view.frame.size.height + 1
self.vPickerWrapper.frame = pickerFrame
self.bIsShowingPicker = false
self.view.layoutIfNeeded()
self.view.updateConstraintsIfNeeded()
})
....
当用户触摸一个要求他们从pickerview中填充的文本字段时,将调用第一个方法。在包装器中触摸关闭按钮或选择按钮时,将调用第二种方法。
该包装器是在情节提要中创建的,具有约束条件(拖尾,前导底部)以将其定位在屏幕之外。最初,我将底部约束条件设置为IBOutlet,并希望更改其常量以处理动画。 (我在此VC中使用其他对象)。然后,我尝试使用CGAffineTransform.translate和.identity进行工作,最后开始使用框架。在所有三种情况下,包装器都会显示但不会关闭(移回屏幕)。
在将其框架设置为pickerFrame之后,这是vPickerWrapper的值:
pickerFrame CGRect (origin = (x = 0, y = 668), size = (width = 375, height = 300))
这是我所期望的,只是模拟中没有任何动画。视图永远不会动。知道为什么显示器没有以新坐标显示它吗?