iphone - 当我在CGAffineTransformMakeScale动画中设置UIImageView的帧时的Strang行为

时间:2011-07-26 16:46:43

标签: iphone animation uiimageview transform frame

我有一个UIImageView显示一个内容模式为UIViewContentModeScaleAspectFill的图像。

然后我将CGAffineTransformMakeScale的动画(约30秒)与UIImageView相关联。

imageView.transform = CGAffineTransformMakeScale(1,1);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:30];
imageView.transform = CGAffineTransformMakeScale(1.9,1.9);
[UIView commitAnimations];

30秒后,当完成一轮动画时,我会将另一个图像设置到imageView并重新启动动画。

一切都很好。但是当我尝试旋转UIImageView以适应用户对设备方向的选择时,它就变得有线了。

当用户即将更改方向时,我将UIImageView的帧设置为CGRectMake(0,0,768,1004)或CGRectMake(0,0,1024,748)。

奇怪的是:

如果动画时改变了UIImageView的框架,那很好。但是当下一张图像出现并开始新一轮动画时,UIImageView突然变得很小,在屏幕中央(应该是全屏)然后放大的动画像往常一样开始,只是不再全屏了

当UIImageView对其进行转换时,有人能告诉我如何控制框架或方向吗?

因为我猜这是它出错的地方。

由于

2 个答案:

答案 0 :(得分:6)

frame属性的the documentation

  

警告:如果转换属性不是标识转换,则此属性的值未定义,因此应忽略。

如果您正在使用转换,那么您可能应该使用centerbounds

答案 1 :(得分:1)

转换时未定义框架属性。在这种情况下使用边界而不是框架。