【发布时间】:2012-06-13 20:52:20
【问题描述】:
我的应用程序中有一个 UITabBar。其中一个标签栏图标看起来像一个加载符号。当用户按下加载按钮时,我希望图标旋转/旋转直到加载完成。我应该使用 UIImageView 来制作动画还是其他什么?我应该如何做到这一点?
【问题讨论】:
标签: objective-c icons uitabbarcontroller image-rotation
我的应用程序中有一个 UITabBar。其中一个标签栏图标看起来像一个加载符号。当用户按下加载按钮时,我希望图标旋转/旋转直到加载完成。我应该使用 UIImageView 来制作动画还是其他什么?我应该如何做到这一点?
【问题讨论】:
标签: objective-c icons uitabbarcontroller image-rotation
Jacos,很遗憾,您无法使用UITabBarController 来执行此操作并操纵tabBarController 的tabBar 属性。我最好的选择是您使用 UIToolBar 并指定黑色并使其看起来像 tabBar 并在其中添加按钮作为 subView 以便它们看起来像 tabBarItems。
它的可定制性更高,您甚至可以提供滚动体验并为其添加更多按钮。
【讨论】:
tabBar 连接到一堆视图控制器 => 我不明白您的问题。您仍然无法为 tabBarIcons 设置动画。我强烈建议使用 UIToolBar(或)在屏幕中间使用 activityIndicicator 来指示正在加载
UIToolbar 而不是UITabBar :) TBH,您实际上可以创建自己的自定义tabBar 和子类并向其添加动画。但是 APPLE 可能会拒绝它,因为您需要严格遵守规则(但这只是一种风险,APPLE 可能会拒绝您)。
我知道这个问题已经 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 设置动画。我会采用这种方法:
UIActivityIndicatorView 并将其添加到选项卡栏上。将其放置在正确的选项卡上。
[self.tabBarController.tabBar addSubview:activityIndicatorView];【讨论】: