旋转UITabBarController图标

时间:2012-06-13 20:52:20

标签: objective-c icons uitabbarcontroller image-rotation

我的应用程序中有一个UITabBar。其中一个标签栏图标看起来像一个加载符号。当用户按下加载按钮时,我希望图标旋转/旋转直到加载完成。我应该使用UIImageView动画还是其他东西?我该如何实现这一目标?

4 个答案:

答案 0 :(得分:1)

Jacos,遗憾的是你不能用UITabBarController做到这一点并操纵tabBarController的tabBar属性。我最好的选择是你使用UIToolBar并指定一个黑色并使其显示为tabBar,并在其中添加按钮subView,使它们看起来像{{} 1}}。

它更加可定制,您甚至可以提供滚动体验并添加更多按钮。

答案 1 :(得分:1)

我知道这个问题已经有4年了,但我遇到了同样的问题,并通过阅读这里的教程设法解决了这个问题:

https://medium.com/@werry_paxman/bring-your-uitabbar-to-life-animating-uitabbaritem-images-with-swift-and-coregraphics-d3be75eb8d4d#.bjfpbdnut

重点是获取所需UITabBarItem的视图,并从viewDidLoad中获取UIImageView:

UIView *plusView = self.tabBar.subviews[1];
self.plusImageView = plusView.subviews.firstObject;
self.plusImageView.contentMode = UIViewContentModeCenter;

然后在didSelectItem方法中你可以这样做:

[UIView animateWithDuration:0.4 animations:^{
      [self.plusImageView setTransform:CGAffineTransformMakeRotation(M_PI/4)];
}];

我的代码仅将图像视图旋转45度,但您可以根据需要进行更改。

答案 2 :(得分:0)

我猜你可以在计时器上更改UITabBarItem的图标,但这看起来非常糟糕。您必须预先渲染“加载”图标的每个帧,而不是旋转ImageView。

另一个hackey解决方案是将您的ImageView添加到UIWindow并将其移动到TabBarController的TabBar之上(将其添加到TabBar本身就会遇到麻烦)。

答案 3 :(得分:0)

您不应该尝试在UITabBarController中为实际的UIImageView设置动画。我会采取这种方法:

  1. 将相关标签的图像设置为nil或空白图像。
  2. 创建UIActivityIndicatorView并将其添加到标签栏上。将其放在正确的选项卡上。 [self.tabBarController.tabBar addSubview:activityIndicatorView];
  3. 当您的加载任务完成后,将正常图像恢复到选项卡,并从标签栏中删除activityIndi​​cator。