objective-c - iOS View 变换动画

标签 objective-c ios core-animation cgaffinetransformscale

我可能遗漏了一些简单的东西,但我试图用 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/

相关文章:

iphone - 如何通过用户触摸 iPhone 左右滚动页面

objective-c - Objective C、iOS,如何将几个 int 变量附加到属于 IBOutletCollection 一部分的 UIImageView?

macos - 调整 MTKView 的大小会在重绘之前缩放旧内容

ios - 当您点击 iOS 主屏幕上的应用程序图标时,如何制作应用程序启动之类的动画?

objective-c - 如何将 CALayer 转储到 CGImageRef 中?

ios - 使用 NSScanner 转换 NSString

ios - 应用程序审查功能在 iOS 11 中不起作用

iphone - 从主屏幕启动应用程序无法获取远程推送负载?但是从通知中心启动是有效的

ios - 我可以在 PlayStore 和 App Store 上运行发布的 Microsoft PowerApps 应用程序吗?

ios - 在 Xcode 中使用键盘创建文本字段