Я бы хотел, чтобы изображение вращалось без анимации, прежде чем оно оживит масштаб.То, как я это сделал, теперь игнорирует мой начальный поворот представления, если у меня есть анимация впоследствии.
label.transform = CGAffineTransform(rotationAngle: CGFloat(90.0 * .pi / 180))
animateLabel(label:label)
func animateLabel(label:UILabel) {
label.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
UIView.animate(withDuration: 0.2, animations: {
label.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
},
completion: { _ in
UIView.animate(withDuration: 0.1) {
label.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
}
})
}
Обновление : Как я обновил свой код ответом Мэтта, чтобы он правильно анимировался:
Сначала я устанавливаю начальное вращение как переменную преобразования, а затем отправляю его при вызове animateLabel:
var transforms: CGAffineTransform = .identity
transforms = transforms.concatenating(CGAffineTransform(rotationAngle: CGFloat(90.0 * .pi / 180)))
animateLabel(label:label, transforms:transforms)
Я согласовываю масштаб и устанавливаю преобразование в измененное преобразование.Затем я могу использовать масштабирование для реальной анимации:
func animateLabel(label:UILabel, transforms:CGAffineTransform) {
transforms.concatenating(CGAffineTransform(scaleX: 0.6, y: 0.6))
label.transform = transforms
UIView.animate(withDuration: 0.2, animations: {
label.transform = transforms.scaledBy(x: 1.1, y: 1.1)
},
completion: { _ in
UIView.animate(withDuration: 0.1) {
label.transform = transforms.scaledBy(x: 1.0, y: 1.0)
}
})
}