在视图上实现清晰的缩放动画

时间:2012-12-07 02:43:08

标签: ios uiview core-animation

我想知道人们如何实现一个清晰的UIView的缩放动画。我注意到网络上的示例代码,

self.frame = CGRectMake(0.0f, 0.0f, 200.0f, 150.0f);
[UIView beginAnimations:@"Zoom" context:NULL];
[UIView setAnimationDuration:0.5];
self.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f);
[UIView commitAnimations];

基本上只是改变框架。如果我在100 x 100的图像上执行此操作,则图像看起来不清晰。我想知道是否有办法让UIView清晰变焦。当我查看cocos2d转换时,用于缩放的场景转换似乎没有任何伪像。一切看起来都很清爽!我想知道是否因为UIView已经是那么大,并且他们以较小的尺寸开始视图,因此当它缩放到更大的尺寸时它不会收到不需要的伪像。或者,如果他们在opengl中做了某些事情,或者让它看起来很清晰。 (我不知道opengl,所以如果这个问题完全错了,我道歉!)谢谢。

2 个答案:

答案 0 :(得分:0)

你给了自己正确的答案:

  

我想知道是否因为UIView已经是那么大,并且他们以较小的尺寸开始视图,所以当它缩放到更大的尺寸时它不会收到不需要的伪像。

你不能缩放低分辨率的图片,并期望它看起来很棒。有一些可能性,如双三次插值,可以避免像素边界在缩放中被放大,但它仍然保持不清晰。你不能在没有信息的地方创造信息。

答案 1 :(得分:0)

我认为你的代码看起来很好(不过,我认为推荐的动画制作方法现在是UIView animate...)。我认为可能存在两个问题:

  1. 您的图像是100 x 100并被炸成全屏。这永远不会好看。 (正如this answer中进一步讨论的那样。)

  2. 不保留您的比例(2x1.5帧中的1x1图像)。

  3. 您还需要考虑绘制图像的初始大小。如果你有一个1000x1000的图像,以500x500的比例绘制它,然后将其缩放两次,就不会像第一次在1000x1000处绘制那样好,将其缩小到500x500,然后再缩放它。虽然,UIImageView属性UIViewContentModeRedraw可能在这里有所帮助。