MTAnimation 1.2.2

MTAnimation 1.2.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布时间上次发布2014年12月

Adam Kirk 维护。



  • 作者:
  • Adam Kirk

使用 25+ 种时序函数(例如:弹跳、弹性、指数等)对 UIView/NSView 进行动画。

允许您以熟悉的方式(例如 [UIView animateWithDuration:animations:])为应用中的视图添加动画,同时增加了 25+ 种缓动函数(来自 jQuery),使您的动画更加直观

优势

  • 方法与苹果的 API 非常相似。
  • 无需解耦。
  • 无需弄懂关键路径,只需更改 UIView 的属性即可。
  • 正确的变换矩阵插值,因此旋转看起来正确。
  • 通过 Cocoapods 进行安装。
  • 以 category 方法进行前缀。

安装

在您的 Podfile 中添加此行:

pod "MTAnimation"

然后添加导入:

// Same import for both iOS/OSX
#import <UIView+MTAnimation.h>

预览

Animation Sample

示例应用

iPhone

  • 克隆仓库(或下载 zip)并运行 iPad 示例应用来尝试。

Mac

  • 下载并运行开发者签名的 Mac 示例

  • 克隆 仓库(或下载 zip)并自行构建和运行 mac 应用程序。

示例使用

与 UIKit 动画方法类似,但您必须提供所有待动画视图的数组以及一个缓动函数。

[UIView mt_animateWithViews:@[view]
                   duration:0.25
             timingFunction:kMTEaseOutBack
                 animations:^{
                     CGRect r             = _logoImageView.frame;
                     r.origin.x           = 50;
                     _logoImageView.frame = r;
                 }];

您可以动画:

UIView/NSView - frame
UIView/NSView - bounds
UIView        - center
UIView/NSView - alpha
UIView        - transform (CGAffineTransform)
CALayer       - transform (CATransform3D)

您可以将动画划分为多个部分(使用 range 参数)。您可能用这来在翻转动画的中间交换视图。

_logoImageView.image = [UIImage imageNamed:@"logo"];
[UIView mt_animateWithViews:[view mt_allSubviews]
                   duration:0.25
                      delay:0
             timingFunction:kMTEaseOutBack
                      range:MTMakeAnimationRange(0, 0.135)
                    options:0
                 animations:^{
                     CGFloat radians                 = mt_degreesToRadians(_endRotation);
                     _logoImageView.layer.transform  = CATransform3DMakeRotation(radians, 0, 1, 0);
                 } completion:^{
                     _logoImageView.image = [UIImage imageNamed:@"logo-flip"];
                     [UIView mt_animateWithWithViews:[view mt_allSubviews]
                                            duration:0.25
                                               delay:0
                                      timingFunction:kMTEaseOutBack
                                               range:MTMakeAnimationRange(0.135, 1)
                                             options:0
                                          animations:^{
                                              CGFloat radians                 = mt_degreesToRadians(_endRotation);
                                              _logoImageView.layer.transform  = CATransform3DMakeRotation(radians, 0, 1, 0);
                                          } completion:^{
                                          }];
                 }];

此代码将在图像侧转后进行动画,然后交换图像视图的图像并继续动画,以便看起来像有背面。

注意事项

  • 动画的视图必须是底层支持的。请参阅 [NSView setWantsLayer:]

作者

Adam Kirk (@atomkirk)

贡献

在我需要帮助的地方有 TODO: 注释,请随时。

致谢

灵感来源于 Nocho Soto 的 NSBKeyframeAnimation 库

代码摘录自 Ivan Vulic & Amr Aboelela 在 CAAnimation 上的工作

缓动函数 来自 jQuery

许可

版权所有(c)2010 Mysterious Trousers, LLC(《http://www.mysterioustrousers.com》)

任何人取得此软件和相关文档副本(“软件”)的副本,在此特此免费许可,不必限制地使用该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或将软件副本的全部或任何部分进行销售,并允许将软件提供给他人以便于他们按本许可中的条款执行上述行为

上述版权声明和本许可声明应包含在所有软件副本或任何实质性部分的副本中。

软件按“现有状态”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论此类索赔、损害或责任是否由合同行为、侵权行为或其他行为引起,是否因使用软件或对软件的使用或其他方式引起。