У меня есть два метода:
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()
})
....
первый метод вызывается, когда пользователь касается текстового поля, которое требует, чтобы он заполнялся из окна выбора.Второй метод вызывается, когда в оболочке происходит прикосновение к кнопке закрытия или выбора.
Оболочка создается в раскадровке и имеет ограничения (тянущийся, ведущий снизу), чтобы расположить ее за пределами экрана.Я изначально сделал нижнее ограничение IBOutlet и хотел изменить его константу для обработки анимации.(Что я делаю с другими объектами в этом VC).Затем я попытался работать с CGAffineTransform.translate и .identity и, наконец, переключился на работу с фреймом.Во всех трех случаях оболочка будет отображаться, но не закрываться (отойти от экрана).
Вот значение vPickerWrapper после того, как я установил его фрейм в pickerFrame:
pickerFrame CGRect (origin = (x = 0, y = 668), size = (width = 375, height = 300))
, что я и ожидал, но не какая-либо анимация в симе.Вид никогда не движется.Есть идеи, почему дисплей не показывает его в новых координатах?