gar*_*hdn 1 iphone animation objective-c ipad ios
在对a执行动画变换时,我遇到了一些异常行为UIImageView.下面方法中的代码使图像看起来像是从一侧到另一侧摇摆:
-(void) shakeAnimation
{
float degrees = 30; //the value in degrees
imgShake.autoresizingMask = UIViewAutoresizingNone;
[UIView animateWithDuration:0.20f delay:0 options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat) animations:^{
imgShake.transform = CGAffineTransformMakeRotation(degrees*M_PI/180);
} completion:^(BOOL finished) {
imgShake.transform = CGAffineTransformMakeRotation(1*M_PI/180);
NSLog(@"Shake finished");
}];
}
Run Code Online (Sandbox Code Playgroud)
问题出在我调用方法的地方.如果我调用viewDidAppear动画中的方法似乎完美...但由于其他原因我需要调用它viewDidLoad.当我从viewDidLoad动画函数调用方法但不是以指定的速度调用时animateWithDuration.它可能要慢得多0.70f.有什么我可以在这里失踪?
你永远不需要打电话viewDidLoad.这是完全错误的,它不会起作用.将代码移入viewDidAppear.如果您有理由将其付诸实践viewDidLoad,请解决原因!
编辑:你永远不知道什么时候viewDidLoad被调用 - 它甚至可以被多次调用一个控制器.通常,动画缓慢的问题是由两个动画之间的碰撞引起的.例如,如果您的控制器通过a动画到屏幕UINavigationController,则您的动画将与"推"动画发生碰撞,并且它们会很慢.这就是你应该使用的viewDidAppear原因,因为当调用这个方法时你知道控制器被显示并且"出现"动画已经结束.
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |