UIView.animateWithDuration не анимируется после начальной анимации - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть два метода:

    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)) 

, что я и ожидал, но не какая-либо анимация в симе.Вид никогда не движется.Есть идеи, почему дисплей не показывает его в новых координатах?

...