这是一个高度可配置的UIView分类,用于摇晃视图。您可以通过一行代码开始摇晃视图 :). 它支持几种不同的摇晃样式(水平、垂直、旋转)并允许您配置持续时间、速度和摇晃强度。
SCViewShaker 作为UIView的分类工作。它提供以下方法
- (void)shake;
- (void)shakeWithOptions:(SCShakeOptions)shakeOptions force:(CGFloat)force duration:(CGFloat)duration iterationDuration:(CGFloat)iterationDuration completionHandler:(ShakeCompletionHandler)completionHandler
- (void)endShaking
@property (readonly, nonatomic) BOOL isShaking
shakeOptions 是一个枚举,可以通过使用 OR 运算符(如 SCShakeOptionsDirectionRotate | SCShakeOptionsForceInterpolationNone)激活。
force 是每次摇晃迭代所应施加的力的系数(通常在0和1之间,尽管没有限制你设置更高值)。
duration 是摇晃运动的总持续时间。这可能会根据您设置的选择而被忽略。iterationDuration 是每次摇晃迭代将持续多长时间。如果您想要一个适当的摇晃效果,您可能希望设置一个非常低的值(例如0.02)。
completionHandler,如果不是null,是当摇晃完成时将会调用的块。
UIView *view = ...; // Grab a view from somewhere
[view beginShakingWithOptions:SCShakeOptionsDirectionRotate | SCShakeOptionsForceInterpolationExpDown | SCShakeOptionsAtEndRestart | SCShakeOptionsAutoreverse force:0.15 duration:1 iterationDuration:0.03 completionHandler:nil];
方向影响摇晃效果的视觉效果。这里显示的所有值范围都是基于力值为1计算的。
SCShakeOptionsDirectionRotate: 视图将旋转从-90°到90°。
SCShakeOptionsDirectionHorizontal: 视图将在水平方向上从-框架宽度移动到+框架宽度。
SCShakeOptionsDirectionVertical: 视图将在垂直方向上从-框架高度移动到+框架高度。
SCShakeOptionsDirectionHorizontalAndVertical: 视图将随机在水平和垂直方向上移动。
力插值影响力随时间的变化。
SCShakeOptionsForceInterpolationNone: 力将始终保持您提供的力值。
SCShakeOptionsForceInterpolationLinearUp: 力将线性地从0变为您提供的力值。
SCShakeOptionsForceInterpolationLinearDown: 力将线性地从您提供的力值变到0。
SCShakeOptionsForceInterpolationExpUp: 力将指数变化从0变为您提供的力值。
SCShakeOptionsForceInterpolationExpDown: 力将指数变化从您提供的力值变到0。
SCShakeOptionsForceInterpolationRandom:力将与您提供的值在0之间随机变化。
结束时的操作定义了震荡完成后应该发生什么。
SCShakeOptionsAtEndRestart:震荡将自动从开始处重新启动。
SCShakeOptionsAtEndComplete:震荡将停止。
SCShakeOptionsAtEndContinue:震荡将无限进行下去。当达到持续时间后,力量将不再改变。
SCShakeOptionsAutoreverse:当震荡达到结束时,震荡将继续以相反的顺序进行。 设置此值将使实际上效的 持续时间 加倍。
如果您正在使用cocoapods,可以使用以下Podfile使用此项目
pod "SCViewShaker", "~> 1.0.0"