2
所以我需要创建一个简单的动画,其中一个视图从屏幕上飞下来,然后再次基于用户手势飞回来。我的动画代码(如下)效果非常好。其实它有点太好了。请注意,enterStage方法中我没有重新定位视图。我只是将它的比例设置为1.视图飞入并且处于原始位置就好了。如果我改用CGAffineTransformMakeTranslation而不做缩放,它也可以很好地工作。我预计我需要跟踪自己的原始大小和位置,但看起来好像这件事对我来说有点神秘。UIView animateWithDuration返回原始状态
这是神秘的。
这是关于原始大小和位置的数据保存在哪里? 如果我想要如何禁用此行为 - 就像我希望视图不记得其原始位置一样?
-(void) exitStage{
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
CGAffineTransform t = CGAffineTransformMakeTranslation(0, -1000);
self.transform = CGAffineTransformScale (t, 10.0, 10.0);
}
completion:^(BOOL finished){
}];
}
-(void) enterStage{
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:(void (^)(void)) ^{
//self.transform = CGAffineTransformMakeTranslation(0, self.originalYcoord);
self.transform = CGAffineTransformMakeScale(1,1);
}
completion:^(BOOL finished){
}];
}
+1,是啊,这一个。 – 2013-03-28 15:42:10
...但是那里的信息被保存在哪里? UIView的框架是否保持不变,并且不会被变换修改?我没有检查过。 – NFG
信息保存在变换属性中,当操作系统去绘制对象时,它将变换应用于任何需要绘制的东西 –