我可能遗漏了一些简单的东西,但我试图用 ImageView 做一个简单的“Ken Burns Effect”。
首先是代码:
[UIView animateWithDuration:20
delay:2
options:UIViewAnimationCurveLinear
animations:^{
CGAffineTransform move = CGAffineTransformMakeTranslation(40, 40);
CGAffineTransform zoom = CGAffineTransformMakeScale(1.2, 1.2);
CGAffineTransform transform = CGAffineTransformConcat(zoom, move);
self.imageView.transform = transform;
}
completion:^(BOOL finished){
NSLog(@"Done");
}];
我预计这将从正常比例的 ImageView 开始,然后在 20 秒内将其扩展到 120% 的大小。实际发生的是它开始时立即小于正常大小,然后扩展到正常大小。
如果我使用比例值的倒数,它开始放大然后缩小到正常比例,这与我想要的效果相反。
有什么想法吗?
最佳答案
好的,这确实奏效了,并且做了我想要的。
CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
transformAnimation.duration = 20.0;
transformAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
transformAnimation.removedOnCompletion = NO;
transformAnimation.fillMode = kCAFillModeForwards;
CATransform3D xform = CATransform3DIdentity;
xform = CATransform3DScale(xform, 1.2, 1.2, 1.0);
xform = CATransform3DTranslate(xform, 60, -60, 0);
transformAnimation.toValue = [NSValue valueWithCATransform3D:xform];
[self.imageView.layer addAnimation:transformAnimation forKey:@"transformAnimation"];
关于objective-c - iOS View 变换动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734984/