5 iphone cocoa-touch core-animation uiview
我想向右侧"拉伸"一个UIView,意思是用foo像素增加它的frame.size.width,同时使用[UIView beginAnimations]语法减少它的frame.origin.x foo像素.但是,如果我这样做,当动画开始时,视图立即调整大小,然后启动原点的动画.
CGRect currFrame = someView.frame;
currFrame.size.width += 100;
currFrame.origin.x -= 100;
[UIView beginAnimations:@"Anim1" context:nil];
someView.frame = currFrame;
[UIView setAnimationDuration:0.7];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)
我也尝试将动画分解为2个部分但是我无法保持正确的位置.
任何帮助深表感谢!
您可能需要下拉到核心动画并将其分成两个显式动画:
CABasicAnimation *stetchAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"];
stetchAnimation.toValue = [NSNumber numberWithDouble:(someView.frame.size.width+100)/someView.frame.size.width];
CABasicAnimation *slideAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
slideAnimation.toValue = [NSNumber numberWithDouble:-100];
CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
animationGroup.animations = [NSArray arrayWithObjects:stetchAnimation,slideAnimation,nil];
animationGroup.removedOnCompletion = NO;
animationGroup.fillMode = kCAFillModeForwards;
animationGroup.duration = 0.7;
[someView.layer addAnimation:animationGroup forKey:@"animations"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |