【问题标题】:Achieving crisp zoom animation on a view在视图上实现清晰的缩放动画
【发布时间】:2012-12-07 02:43:07
【问题描述】:

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

【问题讨论】:

    标签: ios uiview core-animation


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      你给了自己正确的答案:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2014-04-20
        • 2013-10-16
        • 2013-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多