简单实现UITabBarButton跳动的动画

来源:互联网 发布:成勘院待遇怎么样 知乎 编辑:程序博客网 时间:2024/05/20 13:40

首先移除自带的tabBarButton。

- (void)viewWillAppear:(BOOL)animated {    [super viewWillAppear:animated];        NSLog(@"%@",self.tabBarController.tabBar.subviews);    for (UIView *view in self.tabBarController.tabBar.subviews) {                if ([view isKindOfClass:NSClassFromString(@"UITabBarButton")]) {                        [view removeFromSuperview];        }            }}


加载xib创建自定义的按钮



在按钮点击事件中添加下面的方法

- (void)shakeViewWithView:(UIView *)view {        CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];    animation.repeatCount = 1;    animation.values = @[@(1.05), @(1.1),@(0.90), @(1.075), @(0.925), @(1.05), @(0.95), @(1.025), @(0.975), @(1.01), @(0.99), @(1)];    animation.duration = 1;    animation.keyPath = @"transform.scale";    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];        [view.layer addAnimation:animation forKey:nil];}

其实实现的方法也比较简单,就是通过CAKeyframeAnimation这个类来实现的,通过给它的属性values赋值,得到一个view变化值的数组,然后经过keyPath确定变化的方式,timingFunction来确定动画效果,就实现了。

注意点就是动画是在view的layer层上进行的,不是在view上,添加的动画的时候别搞错。