Swift AnimateWithDuration не работает в iOS 7

У меня есть анимация, которая отлично работает в iOS 8.1, но в iOS 7.1 кнопка просто появляется там, где она должна быть, без анимации.

Кнопка имеет начальное, конечное и нижнее ограничения, равные 0, и ограничение по высоте, равное 80. Ограничения настраиваются в раскадровке.

В методе viewWillAppear я изменяю нижнее ограничение на -80, чтобы оно не было видно вначале.

Когда пользователь нажимает кнопку, кнопка должна анимироваться, я запускаю этот метод:

func animateCtaUp() {
    self.ctaView.layoutIfNeeded()
    UIView.animateWithDuration(0.5, delay: 0, options: .CurveEaseOut, animations: {
            self.ctaViewBottomConstraint.constant = 0
            self.ctaView.layoutIfNeeded()
        }, completion: { finished in

    })
}

person diogo.appDev    schedule 12.01.2015    source источник
comment
Что значит не работает? Ничего не происходит?   -  person rdelmar    schedule 12.01.2015
comment
Кнопка просто появляется там, где должна быть без анимации   -  person diogo.appDev    schedule 12.01.2015
comment
Этот код отлично работает для меня, когда я помещаю кнопку в контроллер self.view. Что такое Cta View? Это супервизор кнопки?   -  person rdelmar    schedule 13.01.2015
comment
Да, это. Хм. У вас есть идеи, почему это не работает в iOS 7.1?   -  person diogo.appDev    schedule 13.01.2015


Ответы (1)


В общем было 2 бага.

Первый: у меня было представление без ограничений макета. Когда я добавил их, одна из анимаций начала работать.

Вторая ошибка: я звонил

self.ctaView.layoutIfNeeded()

Вместо этого я должен звонить

self.view.layoutIfNeeded
person diogo.appDev    schedule 13.01.2015