objective-c - 同时动画旋转/缩放/平移 UIImage

标签 objective-c ios animation rotation translation

我是 objective-c 的新手,我想在屏幕上添加一个图像,像在 AS3 中那样对它进行补间,将它从屏幕的一端移动到另一端,同时围绕它自己的中心点旋转。

我试过

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
            // TRANSFORM SCREENSHOT
            screenShotView.transform = CGAffineTransformRotate(screenShotView.transform, -M_PI * 0.05);
            screenShotView.transform = CGAffineTransformScale(screenShotView.transform, 0.6, 0.6);
            screenShotView.transform = CGAffineTransformTranslate(screenShotView.transform, 
                                                                  self.webView.frame.origin.x,
                                                                  self.webView.frame.origin.y - self.webView.frame.size.height * 0.3
                                        );

但使用此代码,图像会围绕 TransformIdentity 的中心旋转。因此,在旋转和移动时,旋转会失去控制,并且图像不会完全位于我喜欢的位置。

同时旋转和平移的正确方法是什么,将旋转中心与图像一起平移?

至少在转换之后我想在图像的右上角添加一个关闭按钮。为此,我也需要角的新坐标。

谢谢!

最佳答案

我现在以以下代码结束,但我仍然不知道这是否是最先进的解决方案。

CGAffineTransform translate = CGAffineTransformMakeTranslation(self.webView.frame.origin.x,self.webView.frame.origin.y - self.webView.frame.size.height * 0.25);
CGAffineTransform scale = CGAffineTransformMakeScale(0.6, 0.6);
CGAffineTransform transform =  CGAffineTransformConcat(translate, scale);
transform = CGAffineTransformRotate(transform, degreesToRadians(-10));

[UIView beginAnimations:@"MoveAndRotateAnimation" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:2.0];

    screenShotView.transform = transform;

[UIView commitAnimations];

关于objective-c - 同时动画旋转/缩放/平移 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9622125/

相关文章:

使 ImageView 运行的 Android 缩放动画

objective-c - Cocoa-Touch - 将动画链接在一起

ios - objective-c 停止扫描 AV Foundation

ios - iTunes 拒绝。应用程序在启动时崩溃

iOS - 自动发送电子邮件(不是来自用户的帐户)

ios - 上传图片(MultipartFormData)请求objctiveC

android - 使用 TabHost 动画选项卡切换

ios - Objective-C 中的数组初始化问题

ios - 具有WatchKit扩展名的父应用程序是否为iOS 8及更高版本?

ios - Xcode Storyboard委托(delegate)数据源场景