首先移除自带的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上,添加的动画的时候别搞错。