Поскольку вы говорите: «Я использую для перемещения и сжатия меток», я подозреваю, что ваша проблема возникает из-за того, что вы вызываете self.layoutIfNeeded()
для самой метки, которая обновит ограничения в пределах области текущего представления, но перемещаетпредставления должны быть выложены супервизия.В качестве теста вы также можете включить self.superview?.layoutIfNeeded()
в свой блок анимации, но если вы хотите быть уверенным, передайте суперпредставление метки этой функции и вызовите layoutIfNeeded()
для этой.
extension UIView {
func moveLabel(lc: NSLayoutConstraint, hc: NSLayoutConstraint, superView: UIView) {
lc.constant = -1
hc.constant = 24
UIView.animate(withDuration: 0.5, delay: 0, options: [.curveEaseInOut], animations: {
self.transform = CGAffineTransform(scaleX: 0.7, y: 0.7)
self.alpha = 0.5
self.layoutIfNeeded()
superView.layoutIfNeeded()
}, completion: nil)
}
}
psв вашем коде вы фактически не анимируете ограничения, это ваше намерение?