使用 25+ 种时序函数(例如:弹跳、弹性、指数等)对 UIView/NSView 进行动画。
允许您以熟悉的方式(例如 [UIView animateWithDuration:animations:]
)为应用中的视图添加动画,同时增加了 25+ 种缓动函数(来自 jQuery),使您的动画更加直观。
优势
在您的 Podfile 中添加此行:
pod "MTAnimation"
然后添加导入:
// Same import for both iOS/OSX
#import <UIView+MTAnimation.h>
与 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:]
。在我需要帮助的地方有 TODO:
注释,请随时。
灵感来源于 Nocho Soto 的 NSBKeyframeAnimation 库
代码摘录自 Ivan Vulic & Amr Aboelela 在 CAAnimation 上的工作
版权所有(c)2010 Mysterious Trousers, LLC(《http://www.mysterioustrousers.com》)
任何人取得此软件和相关文档副本(“软件”)的副本,在此特此免费许可,不必限制地使用该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或将软件副本的全部或任何部分进行销售,并允许将软件提供给他人以便于他们按本许可中的条款执行上述行为
上述版权声明和本许可声明应包含在所有软件副本或任何实质性部分的副本中。
软件按“现有状态”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论此类索赔、损害或责任是否由合同行为、侵权行为或其他行为引起,是否因使用软件或对软件的使用或其他方式引起。