Ios 为什么刚开始动画时帧已经更改?

Ios 为什么刚开始动画时帧已经更改?,ios,objective-c,core-graphics,Ios,Objective C,Core Graphics,我正在学习CoreGraphics,更具体地说是仿射变换,我有一个测试项目。简单的自定义视图,包含一些几何元素。只是想看看有什么 我有一个带有根视图的viewController,上面的自定义视图是VC的子视图。自定义视图框架具有屏幕的宽度和一定的高度 这是代码 __block CGAffineTransform transform = CGAffineTransformIdentity; [UIView animateWithDuration:2 anima

我正在学习CoreGraphics,更具体地说是仿射变换,我有一个测试项目。简单的自定义视图,包含一些几何元素。只是想看看有什么

我有一个带有根视图的viewController,上面的自定义视图是VC的子视图。自定义视图框架具有屏幕的宽度和一定的高度

这是代码

__block CGAffineTransform transform = CGAffineTransformIdentity;

[UIView animateWithDuration:2
                 animations:
                           ^{
                               transform = CGAffineTransformRotate(transform, degreesToRadians(45));
                               self.customView.transform = transform;
                           }];

我不明白为什么视图已经调整了大小,当我开始使用仿射变换为其旋转设置动画时,它会水平和垂直收缩。它不应该从视图的原始帧开始,并在旋转时调整其大小吗?

实际视图与动画期间在屏幕上看到的视图之间存在差异。将动画视为投影在真实界面前面的电影。同时,实际视图已经改变。当动画结束时,电影将被删除,并且那里的视图与电影的最后一帧相同。

可能会帮助您阅读我的书中关于这个主题的讨论:是的,嗯,它被称为演示layer@Andy这是正确的!演示层与模型层不同,这就是为什么在动画中,OP看到他的视图做了一件事,但将其记录为完全做了另一件事的原因。