Я борюсь с проблемой, касающейся шкалы CGAffineTransform и перевода, где, когда я устанавливаю преобразование в блоке анимации в представлении, которое уже имеет преобразование, перед тем, как оживить, перескакивает бит.
Пример:
// somewhere in view did load or during initialization
var view = UIView()
view.frame = CGRectMake(0,0,100,100)
var scale = CGAffineTransformMakeScale(0.8,0.8)
var translation = CGAffineTransformMakeTranslation(100,100)
var concat = CGAffineTransformConcat(translation, scale)
view.transform = transform
// called sometime later
func buttonPressed() {
var secondScale = CGAffineTransformMakeScale(0.6,0.6)
var secondTranslation = CGAffineTransformMakeTranslation(150,300)
var secondConcat = CGAffineTransformConcat(secondTranslation, secondScale)
UIView.animateWithDuration(0.5, animations: { () -> Void in
view.transform = secondConcat
})
}
Теперь, когда buttonPressed() называется просмотром, перед тем, как начать анимацию, переходите в левый верхний угол около 10 пикселей. Я только видел эту проблему с преобразованием concat, используя только трансляцию трансляции. Прекрасно.
Изменить: Поскольку я провел много исследований по этому вопросу, я думаю, что я должен упомянуть, что эта проблема появляется независимо от того, включена ли автоматическая компоновка