隐藏时改进tabBar动画

时间:2014-12-17 02:24:20

标签: ios animation uitabbar

我已经考虑过如何让tabBar的隐藏动画更加优雅和流畅:

以下是我的实施方式:
所以我只是想改进动画,而tabBar突然,你知道,消失并隐藏。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
  [self.tabBarController.tabBar setHidden:YES];
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
  [self.tabBarController.tabBar setHidden:NO];
}

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

尝试添加此方法:

- (void)setTabBarHidden:(BOOL)tabBarHidden animated:(BOOL)animated
{
  if (tabBarHidden == _isTabBarHidden)
    return;

  CGFloat offset = tabBarHidden ? self.tabBarController.tabBar.frame.size.height : -self.tabBarController.tabBar.frame.size.height;

  [UIView animateWithDuration:animated ? 0.6 : 0.0
                        delay:0
       usingSpringWithDamping:0.7
        initialSpringVelocity:0.5
                      options:UIViewAnimationOptionCurveEaseIn|UIViewAnimationOptionLayoutSubviews
                   animations:^{
                     self.tabBarController.tabBar.center = CGPointMake(self.tabBarController.tabBar.center.x,
                                                                       self.tabBarController.tabBar.center.y + offset);
                   }
                   completion:nil];

  _isTabBarHidden = tabBarHidden;
}

然后你可以像[self setTabBarHidden:YES animated:YES][self setTabBarHidden:NO animated:YES]一样调用它来隐藏和显示你的栏,这会将它移入和移出屏幕而不是让它立即消失。

不要忘记添加新的bool属性isTabBarHidden,也可以使用动画的值。