【问题标题】:Rotating UITabBarController Icon旋转 UITabBarController 图标
【发布时间】:2012-06-13 20:52:20
【问题描述】:

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

【问题讨论】:

    标签: objective-c icons uitabbarcontroller image-rotation


    【解决方案1】:

    Jacos,很遗憾,您无法使用UITabBarController 来执行此操作并操纵tabBarController 的tabBar 属性。我最好的选择是您使用 UIToolBar 并指定黑色并使其看起来像 tabBar 并在其中添加按钮作为 subView 以便它们看起来像 tabBarItems

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

    【讨论】:

    • 但是如果我的标签栏连接到一堆视图控制器怎么办?
    • 好吧。如果您的 tabBar 连接到一堆视图控制器 => 我不明白您的问题。您仍然无法为 tabBarIcons 设置动画。我强烈建议使用 UIToolBar(或)在屏幕中间使用 activityIndicicator 来指示正在加载
    • 好的,谢谢!我了解您无法为标签栏图标设置动画。当然,我可以在屏幕中间放一个活动指示器(实际上,我已经有了),但我只是认为将标签栏图标动画化以指示加载进度会是一个很酷的效果!
    • 是的,你可以这样做。但是您需要有一个UIToolbar 而不是UITabBar :) TBH,您实际上可以创建自己的自定义tabBar 和子类并向其添加动画。但是 APPLE 可能会拒绝它,因为您需要严格遵守规则(但这只是一种风险,APPLE 可能会拒绝您)。
    【解决方案2】:

    我知道这个问题已经 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 度,但您可以随意更改。

    【讨论】:

      【解决方案3】:

      我想你可以在计时器上更改 UITabBarItem 的图标,但这看起来很笨拙。您必须预先渲染“加载”图标的每一帧,而不是旋转 ImageView。

      另一个 hackey 解决方案是将您的 ImageView 添加到 UIWindow 并将其移动到 TabBarController 的 TabBar 顶部(将其添加到 TabBar 本身会带来麻烦)。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 但是如果是我想要动画的图像呢?
        • 然后你只需使用 UIImageView 代替 UIActivityIndi​​catorView。不过,显然你需要对 UIImageView 做一些 UIView 动画或核心动画。
        猜你喜欢
        • 1970-01-01
        • 2012-03-27
        • 1970-01-01
        • 2010-11-03
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 2012-10-01
        相关资源
        最近更新 更多