【发布时间】:2013-10-22 02:20:14
【问题描述】:
我有一个方法来执行一个小的抖动动画。这个动画有点效果,但每次我从横向位置调用它时它都会旋转。当模拟器处于横向时调用动画时,整个视图会自行旋转为纵向,然后执行动画。旋转本身没有动画,它只是突然变化,没有延迟。视图中的所有内容也会发生变化,所有按钮、文本字段、图像视图等。
动画代码:
- (void)shakeView
{
CGFloat t = 8.0;
CGAffineTransform translateRight = CGAffineTransformTranslate(CGAffineTransformIdentity, 0.0, t);
CGAffineTransform translateLeft = CGAffineTransformTranslate(CGAffineTransformIdentity, 0.0, -t);
self.view.transform = translateLeft;
[UIView animateWithDuration:0.07 delay:0.0 options:UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{[UIView setAnimationRepeatCount:3.0];
self.view.transform = translateRight;
}
completion:^(BOOL finished){
if (finished)
{
[UIView animateWithDuration:0.05 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{self.view.transform = CGAffineTransformIdentity;
}
completion:NULL];
}
}];
}
老实说,我对动画做的不多,所以我不知道我在这里做错了什么,更不用说我应该尝试什么或应该在哪里寻找答案。
我希望在保持动画的同时保持方向。
【问题讨论】:
-
我没有发现任何问题..它完全可以正常工作...您的代码的其他部分可能有问题。
-
@Xman,你在横向运行动画了吗?我的整个 UIView、所有按钮、文本字段和图像视图都翻转为纵向,而模拟器保持横向。
-
我在两种模式下都运行它..
-
所以我最终使用了这里给出的动画:stackoverflow.com/a/3858202/2535467。但是上面的代码还没有修复。
标签: ios animation cgaffinetransform quartz-core