-1

我想知道人们如何实现清晰的 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,所以如果这个问题完全错误,我道歉!)谢谢。

4

2 回答 2

1

我认为您的代码看起来不错(不过,我认为推荐的动画方法是 now UIView animate...)。我觉得可能有两个问题:

  1. 您的图像是 100 x 100 并且被放大到全屏。这永远不会看起来很好。(如本答案中进一步讨论的那样)。

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

同样值得考虑的是您绘制图像的初始大小。如果您有一个 1000x1000 的图像,将其绘制为 500x500,然后将其缩放 2 倍,看起来不如您首先以 1000x1000 绘制,然后将其缩小到 500x500,然后再放大。虽然, UIImageView 属性UIViewContentModeRedraw在这里可能会有所帮助。

于 2012-12-07T02:56:05.743 回答
0

你给了自己正确的答案:

我想知道这是否是因为 UIView 已经是那个大小,并且它们以较小的尺寸开始视图,所以当它放大到较大的尺寸时,它不会收到不需要的工件。

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

于 2012-12-07T02:54:13.247 回答