CGAffineTransformMakeScale()在动画后扭曲视图帧

时间:2014-07-22 03:11:44

标签: objective-c ios8 xcode6

我正在制作一个视图,使其显示为从屏幕中心开始使用theCGAffineTransformMakeScale(),它在iOS 8 beta 4模拟器中工作正常但在7.1版本上它会扭曲框架图。

view.alpha     = 0.0f;
view.transform = CGAffineTransformMakeScale(0.95f, 0.95f);

[UIView animateWithDuration:0.5f
                      delay:0.0f
     usingSpringWithDamping:1.0f
      initialSpringVelocity:1
                    options:0
                 animations:^{
                    view.alpha     = 1.0f;
                    view.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
                             }
                 completion:nil];

它在iOS 8和iOS 7.1版本的最后一个测试版中都运行良好。 其他人遇到此问题,该视图是UINavigationControl的表格。

进行一些测试似乎变换是拉伸视图帧而不是在动画期间缩放它。

经过进一步测试,我发现只有使视图变小(例如1.0到0.9)的变换才会导致它改变宽度,如果变换使视图变大(1.1到1.0),然后将其设置为当前的动画正常比例,动画没有问题。

1 个答案:

答案 0 :(得分:3)

当转换的起点或终点具有零刻度时,有时会出现失真。尝试将初始变换设置为小但非零的,例如

view.transform = CGAffineTransformMakeScale(0.01f, 0.01f);