我的应用程序中有一个 UITabBar。其中一个标签栏图标看起来像一个加载符号。当用户按下加载按钮时,我希望图标旋转/旋转直到加载完成。我应该使用 UIImageView 来制作动画还是其他什么?我应该如何做到这一点?
4 回答
Jacos,不幸的是,您无法使用UITabBarController
和操作 tabBarController 的 tabBar 属性来做到这一点。我最好的选择是您使用 aUIToolBar
并指定黑色并使其看起来像 atabBar
并在其中添加按钮作为 asubView
使它们看起来像tabBarItems
。
它的可定制性更高,您甚至可以提供滚动体验并为其添加更多按钮。
我知道这个问题已有 4 年历史,但我遇到了同样的问题,并通过阅读此处的教程设法解决了这个问题:
要点是获取所需 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 度,但您可以根据需要进行更改。
我想你可以在计时器上更改 UITabBarItem 的图标,但这看起来很笨拙。您必须预先渲染“加载”图标的每一帧,而不是旋转 ImageView。
另一个 hackey 解决方案是将您的 ImageView 添加到 UIWindow 并将其移动到 TabBarController 的 TabBar 的顶部(将其添加到 TabBar 本身就是自找麻烦)。
您不应该尝试在 UITabBarController 中为实际的 UIImageView 设置动画。我会采取这种方法:
- 将相关选项卡的图像设置为 nil 或空白图像。
- 创建一个
UIActivityIndicatorView
并将其添加到选项卡栏上。将其放置在正确的选项卡上。[self.tabBarController.tabBar addSubview:activityIndicatorView]
; - 加载任务完成后,将正常图像恢复到选项卡并从选项卡栏中删除活动指示器。