iOS:为项目制作动画并模糊其他内容的最佳方式?

ale*_*clp 5 iphone animation core-graphics objective-c ios

我从这开始:

开始屏幕

当用户点击这些面孔中的任何一个时,它必须设置为屏幕中心的动画,然后显示它周围的一些按钮,有点像这样

在动画结束时它需要看起来像什么

问题是我不知道我该怎么做,所以我问你一些建议,你怎么建议我应该这样做.

WDU*_*DUK 3

可以在以下位置找到示例实现: https: //github.com/WDUK/ButtonAnimationStackOverflow(大多数(如果不是全部)处理都是在 WDViewController.m 中完成的,因此请集中精力在那里)

作为简要概述,该示例的开发过程如下:

  • 不需要 CoreAnimation,我们只需通过 UIKit 动画包装器以及centeralpha属性的操作即可实现所需的动画。

  • 动画分两个阶段完成,首先将所选按钮置于中心,然后展开可用选项。还包括反转此操作的动画。

  • 模糊背景是通过使用 Apple 作为 WWDC 2013 的示例代码提供的类别,并使用两个图像视图进行简单的淡入/淡出来实现的。这效果非常好。

关键计算:

  • 要将图像动画到中心,请将图像设置为与动画块内.center相同self.view.center

  • 要计算图像周围选项的位置,请使用以下公式

    newX = oldX + distance * cos(angleInRadians);
    newX = oldY + distance * sin(angleInRadians);
    
    Run Code Online (Sandbox Code Playgroud)
  • 选项的角度(以度为单位)可以计算为

    indexOfOption * (360.0 / numberOfOptions)
    
    Run Code Online (Sandbox Code Playgroud)
  • 将度数转换为弧度

    (angleInDegrees / 180.0) * M_PI
    
    Run Code Online (Sandbox Code Playgroud)
  • 要将图像动画恢复到其原始位置,可以存储原始位置并使用它(屏幕上有 15 个选项可能会很混乱),或者计算原始位置(如我的示例中所示)。为此,您需要执行以下操作

    image.origin.x = edgePadding + (imageSize * (i%imageCountPerRow) + (i%imageCountPerRow) * edgePadding);
    image.origin.y = topPadding + edgePadding + (imageSize * (i/imageCountPerRow) + (i/imageCountPerRow) * edgePadding);
    
    Run Code Online (Sandbox Code Playgroud)

我想说它们是您需要记住的关键计算,各种图像和视图的 alpha 值是直接的。

正如 GitHub 中提到的,我不保证代码在生产中使用时的质量和准确性。我只是在 40 分钟内完成了它,可能存在拼写错误和小错误。但它确实可以编译并运行,并演示了我认为您想要的效果。

如果您想扩展此代码,请继续。您可以采取很多措施来改进这一点(例如,显示选项时速度会轻微反弹!),尽管其中一些改进可能需要在考虑核心动画的情况下重写代码。