我正在尝试做一个小动画,它会改变标签框架并改变字体大小。 我已经看到直接动画字体大小是不可能的。所以我试图使用CGAffineTransform。
这是我到目前为止所尝试的内容:
UIView.animateWithDuration(1, animations: {
if self.topConstraint.active {
self.initialTopConstraint.active = false
self.initialLeadingConstraint.active = false
self.label.transform = CGAffineTransformMakeScale(0.5, 0.5)
self.finalTopConstraint.active = true
self.finalLeadingConstraint.active = true
}
else {
self.initialTopConstraint.active = true
self.initialLeftConstraint.active = true
self.label.transform = CGAffineTransformMakeScale(1.5, 1.5)
self.finalTopConstraint.active = false
self.finalLeftConstraint.active = false
}
self.view.layoutIfNeeded()
})
事实上,这是有效的,但我使用自动布局,并且在动画结束时,根本不满足约束。最终约束常数为8,当我在动画结束时打印标签框时,标签距离左边大约13个点,距离顶部大约16个点。
初始框架:
尊重约束但未进行字体大小更改的最终帧:
未遵守约束且更改字体大小的最终帧:
无论如何都要正确组合自动布局和CGAffineTransform?