不确定这是否与我的问题相关,但我有一个动画序列,可以使用以下代码将UIView
移出框架:
[UIView animateWithDuration:0.3
delay:0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
_popupView.transform = CGAffineTransformMakeTranslation(0, -750);
}
completion:^(BOOL finished) {
_popupView.alpha = 0.0f;
}];
我之前一直在使用上述动画的 INSTEAD
....
animations:^{
_popupView.frame = CGRectOffset(_popupView.frame, 0, -750);
}
我出于某种原因在执行CGRectOffset
时遇到了一些奇怪的错误,但是当我用CGAffineTransfromMakeTranslation
替换了移动视图的方法时,毛刺似乎已经消失了。
我的问题是:
如果有,可以 这解释了我遇到闪光的原因 动画期间屏幕的底部(几乎就像是设置 它的框架到屏幕的底部)。如果这不是很清楚,我有一个单独的帖子,更具体地询问这个“故障”,并对我的CGRectOffset Glitch进行更深入的解释。
感谢您的帮助!
答案 0 :(得分:3)
不同之处在于,自动布局希望能够完全控制视图的center
和bounds.size
,并在任意时间根据安装的约束重置它们。
自动布局非常谨慎(从iOS 8.0开始),以避免查看您的视图transform
。您的变换应用于自动布局设置的框架之上,自动布局永远不会重置它。
因此,您可以使用变换或更新其约束来为视图的位置设置动画。尝试通过直接设置框架来设置其位置的动画会导致意外行为。