iOS:动画自己的Toast视图

烤面包视图是一个短暂的小弹出窗口,它为用户提供了一小部分信息(请参阅我在那儿做了什么?)。 这是一个Android范例,但是如果您正在使用具有Android组件的iOS应用程序,那么您曾经或将被要求在某个时候实现一个应用程序的可能性很高。 因此,您不妨学习如何简单地制作一个,而不必引入第三方依赖性,对吗? 好吧,那就开始吧。

我将专注于帮助您掌握动画的基础知识。 视图的实际外观可以留给比我更多的才华横溢的设计师使用。

我们将为从导航栏上下来的吐司做动画,但是所学到的教训不必与确切的实现方式联系在一起。 根据需要创建动画。 这是我们希望达到的最终结果:

动画转换

通常仅出于动画目的而修改视图的框架是一个坏主意。 我们将为转换设置动画。 视图frame的职责是设置视图在视图层次结构中的位置。 transform的责任是对视图对用户的外观进行任何修改。 您可以修改视图的变换以旋转,缩放或重新定位。 我们将使用它来重新定位屏幕上的视图并为更改设置动画。

1。

首先,创建吐司视图。 通过将其框架的y位置设置为视图高度的负值,将其定位在当前视图上方。 这会将其放在用户看不到的导航栏后面。 它偷偷地躲在幕后,直到我们对其进行动画处理。

2。

根据视图的高度转换视图的变换。 平移是位置的变化,类似于旋转是角度的变化, 比例尺是大小的变化。 您可以在transform属性上使用以下三种方法来平移,旋转和缩放动画:

  • translatedBy(x:y:)
  • rotated(by:)
  • scaledBy(x:y:)

在第一步中,我们将烤面包的位置精确地定位在视图上方。 通过添加一个变换将其向下移动到最大高度,我们可以将Toast放置在适当的位置,并使它看起来好像它从导航栏的后面掉落了一样。

3。

一旦完成对视图转换的动画,请反转动画。 在视图的变换上反转任何动画非常容易,只需将变换设置回CGAffineTransform.identity 。 这是用于创建所有视图的默认的,未经修改的转换。 在缩放,旋转和平移之后,可以通过将转换重置回CGAffineTransform.identity来回到其舒适区域。

4。

动画的反转完成后,请从层次结构中删除视图。 根据您要制作的动画的确切程度,此步骤可能不是必需的。 但是,对于吐司视图,该视图是瞬时视图,因此我认为最好尊重瞬时吐司的心理模型并将其从视图中删除。

使用UIViewAnimationOptions播放动画的时间安排。 您可以使动画变得容易进出,也可以将其设置为重复并反向运行。

而且,当您准备好继续动画向导的旅程时,请开始探索UIViewPropertyAnimator。 您可以轻松简洁地自定义动画的时间安排,动态更改其方向,甚至使其与用户互动。

祝您玩得开心,Swifting开心!