Обновление ширины пользовательского вида идет не в правильном направлении - PullRequest
1 голос
/ 06 апреля 2020

Я создал пользовательский вид. добавлены ограничения ширины, высоты и centerY.

enter image description here

Я использовал его в раскадровке.

enter image description here

Я хочу добавить метку, увеличить ширину анимации. и через 1,5 секунды мне нужно убрать метку и анимированно уменьшить ширину.

Я написал приведенный ниже код в моем собственном представлении.

fileprivate func unfoldMeAnimatedly() {
        self.labelLeadingToStatusImageView.isActive = true
        self.updateStatusLabel()
        self.layoutIfNeeded()
        self.constraints.forEach { (constraint) in
            if constraint.identifier == "widthOfCardDraftStatus" {
                constraint.constant = 95
            }
        }

        UIView.animate(withDuration: 0.6, delay: 0.0, options: UIView.AnimationOptions.curveLinear, animations: {
            self.layoutIfNeeded()
        }) { (finished) in
        }
    }

    fileprivate func foldMeAnimatedly() {
        self.constraints.forEach { (constraint) in
            if constraint.identifier == "widthOfCardDraftStatus" {
                constraint.constant = 24
            }
        }

        UIView.animate(withDuration: 0.5, delay: 0.0, options: UIView.AnimationOptions.curveLinear, animations: {
            //self.statusLabel.alpha = 0.0
            self.layoutIfNeeded()
        }) { (finished) in
        }
    }

, вызывая анимации

unfoldMeAnimatedly()
DispatchQueue.main.asyncAfter(deadline: .now()+1.5) {
    self.foldMeAnimatedly()
}

Привет результата:

enter image description here

Я не понял, почему он движется. желаемая ширина должна быть увеличена / уменьшена только на одном конце. т.е. правая сторона.

Несколько наблюдений: странно, что я изменил продолжительность анимации на 0,5, 0,5 и время ожидания на 0,5. теперь он работает как положено.

enter image description here

Почему так? Кто-нибудь может объяснить, почему он так себя ведет или какая-то проблема с кодом?

...