当前位置: 首页 > 工具软件 > iOS Spring > 使用案例 >

iOS Spring 弹簧动画总结

董同
2023-12-01

仿照微博首页中间加号后弹出按钮的设计,我的实例:

UIButton *button = [[UIButtonalloc] initWithFrame:CGRectMake(100,100, 100,50)];
    button.backgroundColor = [UIColorredColor];
    [self.viewaddSubview:button];
    

  [UIViewanimateWithDuration:1delay:0.5usingSpringWithDamping:0.3initialSpringVelocity:0.6options:UIViewAnimationOptionCurveEaseInOutanimations:^{
      button.frame =CGRectMake(100,400, 100,50);
   } completion:^(BOOL finished) {
   }];


说明:UIView的分类为我们实现了animateWithDuration这个方法,使得我们很容易就能实现弹簧效果。

它的方法是:

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay usingSpringWithDamping:(CGFloat)dampingRatio initialSpringVelocity:(CGFloat)velocity options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^__nullable)(BOOL finished))completion

参数解析:

duration:动画的持续时间

delay:动画延时几秒执行

dampingRatio :动画阻尼系数

velocity:动画开始速度

options:动画效果参数

completion:动画执行完成的回调

其中:dampingRatio(动画阻尼系数)和velocity(动画开始速度)是需要重点了解的。阻尼系数(0~1),学物理的时候因该接触过,衡量阻力大小的一个标准,阻尼系数越大则说明阻力越大,动画的减速越开, 如果设为一的话,几乎没有弹簧的效果。而velocity(动画开始速度:01)想对来说比较好理解,就是弹簧动画开始时的速度。


UIViewAnimationOptionLayoutSubviews//进行动画时布局子控件

UIViewAnimationOptionAllowUserInteraction//进行动画时允许用户交互

UIViewAnimationOptionBeginFromCurrentState//从当前状态开始动画

UIViewAnimationOptionRepeat//无限重复执行动画

UIViewAnimationOptionAutoreverse//执行动画回路

UIViewAnimationOptionOverrideInheritedDuration//忽略嵌套动画的执行时间设置

UIViewAnimationOptionOverrideInheritedCurve//忽略嵌套动画的曲线设置

UIViewAnimationOptionAllowAnimatedContent//转场:进行动画时重绘视图

UIViewAnimationOptionShowHideTransitionViews//转场:移除(添加和移除图层的)动画效果

UIViewAnimationOptionOverrideInheritedOptions//不继承父动画设置

UIViewAnimationOptionCurveEaseInOut//时间曲线,慢进慢出(默认值)

UIViewAnimationOptionCurveEaseIn//时间曲线,慢进

UIViewAnimationOptionCurveEaseOut//时间曲线,慢出

UIViewAnimationOptionCurveLinear//时间曲线,匀速

UIViewAnimationOptionTransitionNone//转场,不使用动画

UIViewAnimationOptionTransitionFlipFromLeft//转场,从左向右旋转翻页

UIViewAnimationOptionTransitionFlipFromRight//转场,从右向左旋转翻页

UIViewAnimationOptionTransitionCurlUp//转场,下往上卷曲翻页

UIViewAnimationOptionTransitionCurlDown//转场,从上往下卷曲翻页

UIViewAnimationOptionTransitionCrossDissolve//转场,交叉消失和出现

UIViewAnimationOptionTransitionFlipFromTop//转场,从上向下旋转翻页

UIViewAnimationOptionTransitionFlipFromBottom//转场,从下向上旋转翻页



 类似资料: