实现思路:通过遍历tabBar的subviews拿到到点击的view,然后再做动画效果
在UITabBarController
继承类上对didSelectItem
操作
indexFlag
:全局变量:作用是防止重复点击相同的bar触发动画效果
下面的代码的动画消果是:点击缩小再恢复原样
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
NSInteger index = [self.tabBar.items indexOfObject:item];
if (self.indexFlag == index) {
return;
}
NSMutableArray *btnArray = [NSMutableArray array];
for (UIView *barView in self.tabBar.subviews) {
if ([barView isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
[btnArray addObject:barView];
}
}
UIView *btnView = [btnArray objectAtIndex:index];
for (UIImageView *btnImageView in btnView.subviews) {
if ([btnImageView isKindOfClass:[UIImageView class]]) {
[UIView animateWithDuration:0.15 animations:^{
btnImageView.transform = CGAffineTransformMakeScale(0.7, 0.7);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.15 animations:^{
btnImageView.transform = CGAffineTransformIdentity;
}];
}];
}
}
self.indexFlag = index;
}